crontab定時任務
crondtab是linux下用來週期性的執行某種任務或等待處理某些事件的一個守護進程,與windows下的計劃任務類似,crondtab進程每分鐘會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。
每個用戶都有自己的調度crontab,可以使用crontab -u user -e或切換到user使用vim /etc/crontab(也可crontab -e)編輯crontab定時任務調度表。crontab命令選項意義如下:
linux還定義了兩個控制文件來控制crontab,它們是:/etc/cron.allow和/etc/cron.deny。/etc/cron.allow表示哪些用戶能使用crontab命令,若cron.allow爲空則表明所有用戶都不能安排定時任務;若該文件不存在則會查看/etc/cron.deny,只有不包含在這個文件中的用戶纔可以使用crontab命令;若cron.deny爲空則任何用戶都可以安排作業。兩個文件同時存在cron.allow優先,同時不存在只有root用戶能安排定時任務。
打開/etc/crontab:
crontab文件的基本格式 :
* * * * * command
minute hour day month week command
其中:
minute: 表示分鐘,可以是從0到59之間的任何整數(每分鐘用*或者 */1表示)。
hour:表示小時,可以是從0到23之間的任何整數(0表示0點)。
day:表示日期,可以是從1到31之間的任何整數。
month:表示月份,可以是從1到12之間的任何整數。
week:表示星期幾,可以是從0到7之間的任何整數,這裏的0或7代表星期日。
command:要執行的命令,可以是系統命令,也可以是自己編寫的腳本文件。
在以上各個字段中,還可以使用以下特殊字符:
星號(*):代表所有可能的值,例如month字段如果是星號,則表示在滿足其它字段的制約條件後每月都執行該命令操作。
逗號(,):可以用逗號隔開的值指定一個列表範圍,例如,“1,2,5,7,8,9”
中槓(-):可以用整數之間的中槓表示一個整數範圍,例如“2-6”表示“2,3,4,5,6”
正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute字段,表示每十分鐘執行一次。
crontab例子如:下午4:50刪除/abc目錄下所有子目錄和文件: 50 16 * * * rm -r /abc/*crontab實現定時文件備份的例子,shell腳本實現備份功能,在crontab中定時每天執行腳本。腳本名稱爲fileback.sh.
- #使用root權限將/etc目錄下的所有內容進行備份
- #fileback.sh
- #!/bin/bash
- DIRNAME=`ls /root | grep bak` #獲取/root/bak字符串
- if [ -z "$DIRNAME" ] #如果/root/bak不存在,則創建一個
- then
- mkdir /root/bak
- cd /root/bak
- fi
- #獲取當前年、月、日數據存儲到YY、MM、DD變量中
- YY=`date +%y`
- MM=`date +%m`
- DD=`date +%d`
- BACKETC=$YY$MM$DD_etc.tar.gz #備份文件的名字
- tar zcvf $BACKETC /etc #將/etc所有文件打包
- echo "fileback finished!"