centos7.2 利用crontab執行定時計劃任務

Amos_x發表於2017-11-12

簡介

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

服務

    檢視cron的狀態,設為開機啟動

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

 

配置

    編輯crontab 的配置檔案,設定定時任務。

# 編輯使用者的定時任務,指定的執行的使用者,預設為當前執行命令的使用者
crontab -u {使用者名稱} -e 

配置詳解
# crontab基本格式
# +---------------- minute  分鐘(0 - 59)
# |  +------------- hour    小時(0 - 23)
# |  |  +---------- day     日期(1 - 31)
# |  |  |  +------- month   月份(1 - 12)
# |  |  |  |  +---- week    星期(0 - 7) (星期天=0 or 7)
# |  |  |  |  |

 

格式為:

# *  *  *  *  *  使用者 要執行的命令

例如:

 

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

 

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

00 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次) 

----------------------------------------------------------------------------------------------------------- 

 

3. 儲存退出後,即可生效,預設crontab會每分鐘檢查一次任務檔案的。

 

# 列出使用者的定時任務列表
crontab -u {使用者名稱} -l 

# 還可以直接寫到crond的主配置檔案內,預設執行者為root。
vim /etc/crontab 

 

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

 

 

日誌

   另外,執行的計劃任務,日誌在 /var/log/cron 中可以檢視執行日誌,以供分析檢視

 

好了,計劃任務就是這麼簡單了

 

相關文章