前言
在平時工作中皂甘,我們經(jīng)常需要執(zhí)行一些定時任務。 比如我的電腦每天晚上都會在凌晨1點開始sync代碼供常,并執(zhí)行編譯摊聋。4點又會sync另一份代碼。執(zhí)行另一個編譯任務栈暇。這無疑會提高我們白天的工作效率麻裁,因為每天到公司都不再需要同步代碼, 并且已經(jīng)有一份編譯好的最新代碼了源祈。
當然煎源,定時任務可以干的遠不止這些,你可以定時跑monkey啊香缺,定時檢查東西發(fā)郵件等手销。
cron服務
Linux系統(tǒng)是由一個叫cron的服務來控制定時任務的。 Linux 系統(tǒng)上面原本就有非常多的計劃性工作图张,因此這個系統(tǒng)服務是默認啟動的锋拖。 (我們可以使用 service --status-all
來查看系統(tǒng)有哪些service運行诈悍,里面有這個cron服務, 直接查看該服務狀態(tài) service crond status
)
由于用戶自己也可以設置計劃任務兽埃,所以侥钳, Linux 系統(tǒng)也提供了使用者控制計劃任務的命令 :crontab (即 cron命令的table, 連起來就是crontab)
系統(tǒng)的cron服務會去讀取以下幾個路徑的配置文件:
- /var/spool/cron/crontabs/ 各個用戶的配置文件
我們通過sudo cat /var/spool/cron/crontabs/(用戶名)
查看當前用戶的定時任務文件 - /etc/crontab 系統(tǒng)的crontab
- /etc/cron.d/ 這個目錄用來存放任何要執(zhí)行的crontab文件或腳本柄错。
那么crontab命令就是幫助我們配置這個表并生效的舷夺。
crontab命令
ok, 我們在終端敲下: crontab --help
usage: crontab [-u user] file
crontab [ -u user ] [ -i ] { -e | -l | -r }
(default operation is replace, per 1003.2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
-i (prompt before deleting user's crontab)
那我們就來編輯一下售貌, crontab -e 给猾, 會出來一個vi的編輯窗口,里面編輯的是我們的配置文件趁矾。我們配置一條1點1分執(zhí)行一個腳本耙册,如下配置保存即可。
#分 時 日 月 周 |<==============任務的完整命令行
01 01 * * * bash -l -c "~/xiamin-doc/task/a1-build.sh >> /tmp/build-a1.log"
當我們保存了上面的配置后毫捣, 其實就保存在 /var/spool/cron/crontabs/(用戶名)
這個配置文件里了详拙。并且cron服務會去讀取表里額配置項執(zhí)行了。
注意點:周與日月不可同時并存
30 12 11 9 5 root echo "just test" <==是錯誤的配置
系統(tǒng)可能會判定每個星期五作一次蔓同,或每年的 9 月 11 號分別進行饶辙,總之會出乎你的意料之外的。
總結
到此我們已經(jīng)知道怎么去配置定時任務了斑粱,以及其原理了弃揽。 接下來就是大家編輯自己腳本,讓其能夠成為我們的工作小幫手了则北!