學會Linux下定時任務管理,可以方便我們做一些周期性的任務,諸如:清理/tmp目錄下文件、數據庫備份、日志分析等。Linux下定時任務管理,主要涉及crontab
命令的使用。
crontab簡介
crontab
命令常見于UNIX和類UNIX操作系統,用于設置被周期性執行的指令。該命令從輸入設備讀取指令,并將其存放在crontab
文件中,以供后續讀取和執行。一般情況下,crontab
存儲的指令被守護進程激活,crond
為其守護進程,crond
常在后臺運行,每一分鐘會檢查一次是否有預定的作業需要執行。
我們可以通過crontab
設置在固定的間隔時間執行指定的系統指令或者Shell、Script腳本。時間間隔可以是分鐘、小時、日、月、周的任意組合。
cron啟動
本人比較了centos和ubuntu的環境準備區別,centos下安裝并啟動crond組件即可;ubuntu下主要涉及如下組件:
-
rsysylog
組件(syslog組件,方便查看任務是否被執行):
sudo service rsyslog start
-
cron
組件
sudo cron -f &
crontab使用
1.查詢定時任務
crontab -l
2.創建定時任務
crontab -e
- 定時任務項格式:
m h dom mon dow command
以上格式從左至右分表表示:
|字母意義|分鐘|小時|日期|月份|周|命令行|
|:-:|:-:|
|數字范圍|059|023|131|-12|0~7|要執行的任務|
其中周中0和7均表示周日。
此外還有一些輔助字符:
符號 | 意義 |
---|---|
* | 表示接受任何時刻 |
, | 表示分割字段,接受以,(逗號)隔開的多個時刻 |
- | 表示一段范圍內的時刻,接受-(減號)區間內的各個時刻 |
/n | 表示每隔n時刻,執行定時任務 |
示例:
*/1 * * * * touch /home/shiyanlou/$(date +\%Y\%m\%d\%H\%M\%S)
表示每隔1分鐘執行touch...的指令。
- 定時任務文檔編輯
crontab -e
命令是針對使用者設計的,用戶添加任務時會在/var/spool/cron/crontabs/
下面創建一個以用戶名命令的任務文檔,這樣可以做到隔離,不會引起混亂。
而系統設置定時任務可以在/etc/crontab
中配置:
系統定時任務
3.刪除定時任務
crontab -r
經簡友提醒,這個命令確實比較危險,它會刪除當前用戶的所有定時任務,所以刪除某些定時任務,最好編輯對應的文件。具體見他的評論:)
總之,cron
這個服務的最低偵測限制是分鐘,所以cron
會每分鐘讀取一次/etc/crontab與/var/spool/cron/crontabs里面的任務文檔,所以也可以直接編輯/etc/crontab,添加定時任務,保存后,cron就會按照你設定的周期去執行了。