Shell腳本之crontab定時任務

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.

  1. #使用root權限將/etc目錄下的所有內容進行備份  
  2. #fileback.sh  
  3. #!/bin/bash  
  4.   
  5. DIRNAME=`ls /root | grep bak`       #獲取/root/bak字符串  
  6.   
  7. if [ -z "$DIRNAME" ]                #如果/root/bak不存在,則創建一個  
  8. then  
  9. mkdir /root/bak  
  10. cd /root/bak  
  11. fi  
  12.   
  13. #獲取當前年、月、日數據存儲到YY、MM、DD變量中  
  14. YY=`date +%y`  
  15. MM=`date +%m`  
  16. DD=`date +%d`  
  17.   
  18. BACKETC=$YY$MM$DD_etc.tar.gz        #備份文件的名字  
  19. tar zcvf $BACKETC /etc              #將/etc所有文件打包  
  20. echo "fileback finished!"  
      先登錄root用戶,cat /etc/crontab,在末尾加上:59 23 * * * /bin/bash /use/bin/filebach.sh,表示每天23:59執行一次filebach.sh腳本。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章