[Linux] Crontab 排程
在 Linux 系統中,每個使用者可以定義自己的 cron table 來設定週期性排程,管理 cron table 的方法是透過 crontab 指令。
crontab 指令:
- crontab -e # 編輯排程
- crontab -r # 移除排程
- crontab -l # 顯示目前排程
- crontab -u # 管理某特定使用者的 cron table。例如:
crontab -u user filename
crontab 的格式如下:
分(0-59), 時(0-23) ,日(1-31) ,月(1-12) ,週(0-6), Command
例:
每 0:15, 12:15 分執行一次
15 0,12 * * * /usr/bin/mkdir xxx.txt
每分鐘執行一次
*/1 * * * * echo "hi cron" >> /tmp/z
運作指令:
service crond start
# 啟動服務service crond stop
# 關閉服務service crond restart
# 重啟服務service crond reload
或/etc/init.d/cron restart
# 重新載入配置
執行排程另一種方法
除 crontab -e
可以設定每日排程外,也有另一種方法執行排程
系統預設提供時間點的排程,在 etc/cron.daily/
cron.hourly/
cron.monthly/
cron.weekly/
只需把 script 放進想要執行時間的資料夾裡,系統時間到就會自動執行
而各時段執行排程的時間點設定在 /etc/crontab
start cron
在 Linux 中,有個程式叫 crond,意思是 cron daemon,大部分的 Linux 系統都會自動背景啟開這個程式,但是有時候會碰到 cron 沒有啟動的狀態,啟動方式如下:
sudo service crond start
啟動之後,我會使用 tail -f /var/log/cron
這個指令來檢查 /etc/crontab
中的程式,是否有正確的被執行。