at,crontab定時程式
介紹
程式員對於定時執行任務一定不陌生,很多工為了減少對使用者的干擾,如系統更新、維護、資料庫結構變更等,通常會選擇在凌晨進行。對於一些簡單的無需人工照看的任務,就可以預先寫好命令,並設定時間自動執行,然後就可以安心睡大覺了。
其他情況還有,可以預計的將來要做的操作,為了防止遺忘,先寫好命令指令碼,然後設定自動執行,就可以把這事從你的日程表裡劃掉啦。
下面進入正題。
一、at
1. 常用命令
基本用法:at [引數] [時間]
控制檯讀入任務完畢, ctrl+d 結束。
引數 | 說明 |
---|---|
at -l 或 atq | 檢視當前任務 |
at -d [任務id]或atrm | 刪除定時任務 |
at -c [任務id] | 列印任務內容 |
at -f [檔案] | 從指定檔案讀入任務,而不是從控制檯 |
2. 用法
時間的指定非常靈活,下面列舉常用幾種:
at 04:00
at 04pm
at noon
at now + 3min/minutes/hours/days/weeks
at 04pm + 20min
at today/tomorrow
at 7:30pm 2017-09-26
二、cron
定時任務命令crontab = chronos + table。chronos來源於希臘語,原意是時間
1. 常用命令
命令 | 說明 |
---|---|
crontab -e | 編輯定時任務,可以增加或刪除。 推薦 |
crontab -l | 列出當前使用者的定時任務 |
crontab -r | 刪除當前使用者的定時任務 |
crontab [test.cron] | 用test.cron(自己定義)覆蓋定時任務檔案 (不推薦) |
2. 配置說明

crontab -e的預設檔案,對配置有了初步的說明,基本夠用。下面通過示例形象說明:
指令 | 功能 |
---|---|
*/2 * * * * echo 'holy shit' >> test.txt | 每兩分鐘執行一次 |
20-40/2 * * * * echo 'holy shit' >> test.txt | 20到40分鐘,每兩分鐘執行一次 |
20-40/2, 50 * * * * echo 'holy shit' >> test.txt | 20到40分鐘,每兩分鐘執行一次,第50分鐘也執行一次 |
0 3-5 * * * echo 'holy shit' >> test.txt | 每天的3到5小時開始時執行一次 |
0 3-5 3,5,6 * * echo 'holy shit' >> test.txt | 每月3、5、6號的3到5點開始時執行一次 |
3. 日誌地址
一般情況下,crontab日誌在/var/log/cron.log.
如果沒有,那麼就在/var/log/syslog,可通過下面命令檢視cron日誌:
grep cron /var/log/syslog
修改日誌位置:
sudo vi /etc/rsyslog.d/50-default.conf #找到下面的line #cron.*/var/log/cron.log #去掉註釋
sudo systemctl restart rsyslog #檢視啟動狀態 sudo systemctl status rsyslog