概述
就像再windows上有計划任務一樣,centos7 自然也有計划任務,而且設置更為靈活,好用。再centos7 上可以利用crontab 來執行計划任務, 依賴與 crond 的系統服務,這個服務是系統自帶的,可以直接查看狀態,啟動,停止。
安裝 crontabs服務並設置開機自啟
yum install crontabs (安裝 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 中。