cron介紹
我們經常使用的是crontab命令是cron table的簡寫,它是cron的配置文件,也可以叫它作業列表,我們可以在以下文件夾內找到相關配置文件。
- /var/spool/cron/ 目錄下存放的是每個用戶包括root的crontab任務,每個任務以創建者的名字命名
- /etc/crontab 這個文件負責調度各種管理和維護任務。
- /etc/cron.d/ 這個目錄用來存放任何要執行的crontab文件或腳本。
- 我們還可以把腳本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目錄中,讓它每小時/天/星期、月執行一次。
crontab的使用
# 常用命令如下
crontab [-u username] //省略用戶表表示操作當前用戶的crontab
-e (編輯工作表)
-l (列出工作表里的命令)
-r (刪除工作作)
我們用crontab -e進入當前用戶的工作表編輯,是常見的vim界面。每行是一條命令。
crontab的命令構成為 時間+動作,其時間有分、時、日、月、周五種,操作符有
- * 取值范圍內的所有數字
- / 每過多少個數字
- - 從X到Z
- , 散列數字
crontab的時間編寫實例
00 02 * * * ls #每天的凌晨2點整執行
00 02 1 * * ls #每月的1日的凌晨2點整執行
00 02 14 2 * ls #每年的2月14日凌晨2點執行
00 02 * * 7 ls #每周天的凌晨2點整執行
00 02 * 6 5 ls #每年的6月周五凌晨2點執行
00 02 14 * 7 ls #每月14日或每周日的凌晨2點都執行
00 02 14 2 7 ls #每年的2月14日或每年2月的周天的凌晨2點執行
*/10 02 * * * ls #每天凌晨2點,每隔10分鍾執行一次
* * * * * ls #每分鍾都執行
00 00 14 2 * ls #每年2月14日的凌晨執行命令
*/5 * * * * ls #每隔5分鍾執行一次
00 02 * 1,5,8 * ls #每年的1月5月8月凌晨2點執行
00 02 1-8 * * ls #每月1號到8號凌晨2點執行
0 21 * * * ls #每天晚上21:00執行
45 4 1,10,22 * * ls #每月的1,10,22號的4:45執行
45 4 1-10 * * ls #每月的1到10號的4:45執行
3,15 8-11 */2 * * ls #每隔兩天的上午8點到11點的第3和第15分鍾執行
0 23-7/1 * * * ls #晚上11點到早上7點之間,每隔一個小時執行
15 21 * * 1-5 ls #周一到周五每天晚上21:15執行
計划任務如何調試
crond調試
- 調整任務每分鍾執行的頻率, 以便做后續的調試。
- 如果使用cron運行腳本,請將腳本執行的結果寫入指定日志文件, 觀察日志內容是否正常。
- 命令使用絕對路徑, 防止無法找到命令導致定時任務執行產生故障。
- 通過查看/var/log/cron日志,以便檢查我們執行的結果,方便進行調試。
crond編寫思路
- 動執行命令,然后保留執行成功的結果。
- 編寫腳本
- 腳本需要統一路徑/scripts
- 腳本內容復制執行成功的命令(減少每個環節出錯幾率)
- 腳本內容盡可能的優化, 使用一些變量或使用簡單的判斷語句
- 腳本執行的輸出信息可以重定向至其他位置保留或寫入/dev/null
- 執行腳本
- 使用bash命令執行, 防止腳本沒有增加執行權限(/usr/bin/bash)可以使用which查看命令的絕對路徑
- 執行腳本成功后,復制該執行的命令,以便寫入cron
- 編寫計划任務
- 加上必要的注釋信息, 人、時間、任務
- 設定計划任務執行的周期
- 粘貼執行腳本的命令(不要手敲)
- 所有命令必須使用絕對路徑(可以使用which進行查看)
- 調試計划任務
- 增加任務頻率測試
- 檢查環境變量問題
- 檢查crond服務日志 /var/log/cron