目錄
Linux下有兩種定時執行任務的方法:at命令和Contab服務
AT命令
- at [選項] 時間
- 選項:
– m:當at工作完成時,無論是否有命令輸出,都通過email通知執行at命令的用戶
–c 工作號:顯示該at工作的實際內容
- 時間:
- HH:MM 02:30
- HH:MM YYYY-MM-DD 02:30 2016-10-04
- HH:MM[am|pm] [month] [date] 02:30 July 25
- HH:MM[am|pm] + [minutes|hours|days|weeks] now +5 minutes
- at now +2 minutes
- atq 查詢系統中的定時任務
- atrm 工作號 刪除指定的at任務
Crontab 服務
Crontab簡介
- Crontab 是一個用於設置週期性被執行任務的工具
啓動Crontab服務
- service crond start
安裝cron
- yum install vixie-cron
- yum install crontabs
一個簡單的例子
- 每分鐘打印當前時間到一個日誌文件中
# crontab -e
# */1 * * * * date >> /tmp/logo.txt
Crontab配置文件格式
* * * * * COMMAND
| | | | |--- 星期0~7(0或者7表示星期天)
| | | |----- 月份1~12
| | |------ 日期 1~31
| |-------- 小時0~23
|---------- 分鐘0~59
例子
- 每晚的21:30重啓apache
– 30 21 * * * service htttpd restart - 每月1、10、22日的4:45重啓apache
– 45 4 1,10,22 * * service httpd restart - 每月1到10日的4:45重啓apache
– 45 4 1-10 * * service httpd restart - 沒個兩分鐘重啓apache
– */2 * * * * service httpd restart
– 1-59/2 * * * * service httpd restart - 晚上11點到早上7點之間,每隔一小時重啓apache
– 0 23-7/1 * * * service httpd restart - 每天18:00至23:00之間每隔30分鐘重啓apache
– 0,30 18-23 * * * service httpd restart
– 0-59/30 18-23 * * * service httpd restart
Crontab工具的使用
- 查看用戶的計劃任務:crontab -l
- 編輯當前用戶的計劃任務:crontab -e [-u] [用戶名]
- 刪除當前用戶的計劃任務:crontab -r
Crontab 配置文件
- 全局(系統)配置文件
– /etc/crontab - 用戶配置文件
– /var/spool/cron/root - 日誌文件
– /var/log/cron - 執行系統定時任務的方法
– 手動指定定時任務
– 系統定時任務 - 第一種是把需要定時執行的腳本複製到/etc/cron.{daily,weekly,monthly}目錄裏面的任意一個
- 第二種是修改/etc/crontab配置文件
Crontab 常見錯誤
- 環境變量:Crontab不識別.bash_profile裏面定義的環境變量
- 第三個和第五個之間指定的是“或”操作
– 四月的第一個星期日早晨1時59分運行a.sh
– 59 1 1-7 4 * test `data + \%w` -eq 0 && /root/a.sh
Crontab 半分鐘執行一次
- 結合sleep命令
– * * * * * sleep 30s; 命令
anacron