1. 程式人生 > >CentOS 7 定時計劃任務設定

CentOS 7 定時計劃任務設定

概述 

  就像再windows上有計劃任務一樣,centos7 自然也有計劃任務,而且設定更為靈活,好用。再centos7 上可以利用crontab 來執行計劃任務, 依賴與 crond 的系統服務,這個服務是系統自帶的,可以直接檢視狀態,啟動,停止。
 

安裝 crontabs服務並設定開機自啟


yum install crontabs
systemctl enable crond (設為開機啟動)
systemctl start crond(啟動crond服務)
systemctl status crond (檢視狀態)

設定使用者自定義定時任務

vi /etc/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

即:
分鐘(0-59) 小時(0-23) 日(1-31) 月(11-12) 星期(0-6,0表示週日) 使用者名稱 要執行的命令

  • */30 * * * root /usr/local/mycommand.sh (每天,每30分鐘執行一次 mycommand命令)

  • * 3 * * * root /usr/local/mycommand.sh (每天凌晨三點,執行命令指令碼,PS:這裡由於第一個的分鐘沒有設定,那麼就會每天凌晨3點的每分鐘都執行一次命令)

  • 0 3 * * * root /usr/local/mycommand.sh (這樣就是每天凌晨三點整執行一次命令指令碼)

  • */10 11-13 * * * root /usr/local/mycommand.sh

    (每天11點到13點之間,每10分鐘執行一次命令指令碼,這一種用法也很常用)

  • 10-30 * * * * root /usr/local/mycommand.sh (每小時的10-30分鐘,每分鐘執行一次命令指令碼,共執行20次)

  • 10,30 * * * * * root /usr/local/mycommand.sh (每小時的10,30分鐘,分別執行一次命令指令碼,共執行2次)

儲存生效

載入任務,使之生效:crontab /etc/crontab

檢視任務:crontab -l
$ crontab -u 使用者名稱 -l (列出使用者的定時任務列表)

PS:特別注意,crond的任務計劃, 有並不會呼叫使用者設定的環境變數,它有自己的環境變數,當你用到一些命令時,比如mysqldump等需要環境變數的命令,手工執行指令碼時是正常的,但用crond執行的時候就會不行,這時你要麼寫完整的絕對路徑,要麼將環境變數新增到 /etc/crontab 中。

好了,計劃任務就是這麼簡單了,但是計劃任務,執行的語句如果是多條,則需要用藥shell指令碼,自己先寫一個shell指令碼,然後在計劃任務中,執行這個指令碼即可。至於shell指令碼的寫法, 這裡不贅述。