定時任務 Crontab命令 詳解
前言
crontab是Unix和Linux用於設定週期性被執行的指令,是網際網路很常用的技術,很多工都會設定在crontab迴圈執行,如果不使用crontab,那麼任務就是常駐程式,這對你的程式要求比較高,一個要求你的程式是24X7小時不宕機,一個是 要求你的排程程式比較可靠,實際工作中,90%的程式都沒有必要花這麼多時間和精力去解決上面的兩個問題的,只需要寫好自己的業務邏輯,通過crond這 個工業級程式去排程就行了,crond的可靠性,健壯性,大家應該是毫無疑問的。
crontab簡易入門
假設我要設定一個任務,每分鐘就要做一個數據同步,這個同步指令碼的路徑是/home/blue/do/rsyncfile.sh,那麼我可以在這麼配置,使用blue
1 |
crontab -e |
2 |
#
此時會進入 vi 的編輯畫面讓您編輯工作!注意到,每項工作都是一行。 |
3 |
#分
時 日 月 周 |<==============任務的完整命令列 |
4 |
*
* * * * /home/blue/ do /rsyncfile.sh |
預設情況下,任何使用者只要不被列入 /etc/cron.deny 當中,那麼他就可以直接下達『 crontab -e
假如我們需要修改為每5分鐘執行資料同步的指令碼,那麼同樣使用 crontab -e 進入編輯:
1 |
*/5
* * * * /home/blue/ do /rsyncfile.sh |
假如伺服器出了問題,有一天的資料沒有同步,於是我們就需要補資料了,假設這個補資料的指令碼是/home/blue/do /rsyncfile_day.sh,但是白天是高峰期,晚上使用者不多,是低峰期,我們補資料會佔用大量頻寬,尤其是白天,會影響正常業務,所以一般我們 可以讓補資料任務在凌晨2點開始跑,那麼同樣使用crontab -e
1 |
0
2 1 4 * /home/blue/ do /rsyncfile_day.sh |
這樣,在4月1號凌晨2點0分就會開始啟動我們的補資料的指令碼了。
同步資料,在網際網路公司是再平常不過的任務了,這裡大家可以看到crontab的魅力所在了,只需要寫最簡單的業務邏輯,把排程交給crond做,就完成了一個可靠性很高的一項任務了,如果要自己去額外寫這種排程程式,不知道要花多少精力才能做到可靠穩定。
crontab的語法
1 |
crontab [-u
username] [-l|-e|-r] |
2 |
選項與引數: |
3 |
-u
:只有 root 才能進行這個任務,亦即幫其他使用者建立/移除 crontab 工作排程; |
4 |
-e
:編輯 crontab 的工作內容 |
5 |
-l
:查閱 crontab 的工作內容 |
6 |
-r
:移除所有的
|