bash程式設計之 crontab 定時任務

2021-08-03 19:13:18 字數 2147 閱讀 6170

crontab  定時任務

# example of job definition:

# .---------------- minute (0 - 59)

# |  .------------- hour (0 - 23)

# |  |  .---------- day of month (1 - 31)

# |  |  |  .------- month (1 - 12) or jan,feb,mar,apr ...

# |  |  |  |  .---- day of week (0 - 6) (sunday=0 or 7) or sun,mon,tue,wed,thu,fri,sat

# |  |  |  |  |

# *  *  *  *  * user-name command to be executed

*/5 * * * *   bash指令碼名   每5分鐘執行

0   2  * * *  bash指令碼名   每天凌晨2點執行

0   2  7 * *  bash指令碼名   每月7號凌晨2點執行

注: day of month + month 與 day of week  不同時使用

crontab命令:

-l: 顯示當前使用者的任務列表

-l -u username  顯示其它使用者的任務列表

-e:編輯任務

-r: 移除所有任務

練習.:每週2,4,7備份/var/log/messages檔案至/backup/messages/目錄中,檔名儲存為形如messages-2017-03-27.tar.xz

0  0  *  *  2,4,7  /bin/cp -a /var/log/messages   backup/messages/messages-`/bin/date "+%y-%m-%d"`

案例:重定向rm命令,使被刪除的檔案移動到recycle_bin目錄。再寫乙個定時任務每天刪除recycle_bin目錄中7天前的檔案

1. 新增檔案/usr/local/recycle_bin/recycle_bin.sh

#!/bin/bash

count=0

dir=/tmp

if [ -d /tmp/recycle_bin ];then

dir=/tmp/recycle_bin/`date +%f-%h-%m-%s`

mkdir -p $dir

for i in $*;do

count=`echo $i|grep "^-"|wc -l`

if [ $count -ne 1 ];then

mv $i $dir

else

count=0

fidone

else

mkdir -p /tmp/recycle_bin

dir=/tmp/recycle_bin/`date +%f-%h-%m-%s`

mkdir -p $dir

for i in $*;do

count=`echo $i|grep "^-"|wc -l`

if [ $count -ne 1 ];then

mv $i $dir

else

count=0

fidone

fi

2. 重定向rm命令

修改~/.bashrc, 如有要對所有使用者生效就修改/etc/.bashrc 

alias rm='rm -i' 改為:

alias rm='/usr/local/recycle_bin/recycle_bin.sh'

resource ~/.bashrc 

3. 新增檔案/usr/local/recycle_bin/clear_recycle_bin.sh

#!/bin/bash

clear_dir=/tmp/recycle_bin/`date -d "7 day ago" +"%y-%m-%d"`*

#clear_dir=/tmp/recycle_bin/`date %y-%m-%d`*

/bin/rm -rf $clear_dir

4.新增定時任務

crontab -e 

30 11 */1 * * /usr/local/recycle_bin/clear_recycle_bin.sh

bash程式設計之 函式

函式 復用 模組程式設計 語法 function f name f name 呼叫 使用函式名 函式名出現的地方,會被自動替換為函式 練習 利用函式改寫此前的服務指令碼 bin bash prog basename 0 lockfile var lock subsys prog start stop...

bash程式設計之陣列

陣列 資料結構,資料序列,儲存連續多個資料,可以使用索引獲取相關元素 宣告陣列 declare a 宣告索引陣列 declare a 宣告關聯數元素賦值 一次賦值乙個元素 root mm alias 0 read root mm echo 一次賦值多個元素 索引預設從0開始 root mm alia...

bash指令碼程式設計之選項

bash指令碼程式設計之選項 getopts getopts 選項字串 名稱 引數 解析選項引數。getopts 被 shell 過程用於解析可定位的引數作為選項。optstring 字串包含待識別的選項字母 如果乙個字母後面跟 著冒號,則該選項期待乙個引數,而該引數應用空格與選項分開。每次啟動時,...