1. 程式人生 > >《鳥哥的Linux私房菜》之定時任務crontab

《鳥哥的Linux私房菜》之定時任務crontab

linux下迴圈執行某個任務的命令是crontab  其背後是crond服務做支援

如果想要定時執行一個任務,可以使用crontab命令

crontab -e  直接編輯

0 0 * * * /root/soft/one.sh

上面的意思是每天凌晨執行 /root/soft/one.sh這個指令碼

# 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
# |  |  |  |  |
# *  *  *  *  *  command to be executed

*代表任何時刻都能接受,就像上面的那樣,任何天,任何個月,任何周都能執行one.sh這個指令碼

其中最後一個0-7有8個取值,0和7都代表週日

,代表時間間隔的意思

  eg: 0 3,5,7 * * * /root/soft/one.sh 表示每天的3、5、7點的第一分鐘起執行one.sh

- 代表時間段 

  eg:0 3-8 * * * * /root/soft/one.sh 表示每天的3、4、5、6、7、8點的第一分鐘執行one.sh指令碼

/ 表示每個N個時間單位執行一次

 eg: */5 * * * * /root/soft/one.sh  表示每隔5分鐘執行一次/root/soft/one.sh

crontab -l 可以直接檢視當前使用者的定時任務

如果想要取消就直接crontab -e刪除自己的定時任務即可

設定允許的使用者即哪些使用者可以使用,哪些使用者不能使用

   白名單:/etc/cron.allow   若不在這個檔案中就不能使用crontab

   黑名單:/etc/crond.deny 若在這個檔案中就不能使用crontab

 一般情況下在/etc/目錄下只留一個檔案

建立crontab 任務後,這些任務會被記錄到/etc/spool/cron/username檔案中  其中username是當前使用者的使用者名稱

此外。crontab的任務的日誌會被記錄到/var/log/cron這個檔案中

 

以上說的都是基於個人使用者的定時任務,如果說有一個系統級別的定時任務,那麼應該怎麼辦呢?

系統級別的定時任務在 /etc/crontab中編輯 不過語法略有不同,需要制定使用者名稱,表示是哪個使用者的系統級別的定時任務

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# 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
*/1 * * * * root /root/soft/one.sh

其中:

shell 表示用的是哪種shell

PATH:指shell的搜尋路徑,說白了就是環境變數

MAILTO:表示如果如果定時任務發生異常,傳送郵件給誰

 

還有一種系統級別的定時任務就是編輯一個新檔案放到 /etc/cron.d/目錄下

新檔案格式如下 

*/10 * * * * user-name  /root/soft/one.sh

和上面的格式一樣

這就是Linux的crontab定時任務