文章插圖

文章插圖
linux系統提供at和crontab兩個命令來執行定時任務 , at主要針對一次性的定時任務 , crontab則執行周期性的定時任務 。在linux運維中使用較多的還是cronjob , 當安裝完linux系統后 , linux會自動啟動crond進程 , 這是周期性任務的守護進 程 , 用于檢查是否有需要執行的定時任務 。
在考慮向cron進程提交一個crontab文件之前 , 首先要做的一件事情就是設置環境變量EDITOR 。cron進程根據它來確定使用哪個編輯器編輯crontab文件 。大多數用戶都使用vi , 如果你和小編一樣也是使用vi , 直接編輯$ HOME目錄下的. profile文件 , 在當中加入:
EDITOR=vi; export EDITOR ~ source .bash_profilecrontab命令時間格式設置
crontab任務字段共六個 , 前五個為時間字段分別為:分 時 日 月 周;第六個為執行命令字段 , 可以是單條命令或者腳本文件 。時間字段可以使用特殊字符 , ’*’代表所有可能值 , ’,’代表選定時間段 , ’-‘代表選定時間范圍 , ’/’代表時間間隔頻率 。
? ~ crontab -l */1 10-14 24,25 * * echo `date` >> /root/date.log 含義為:每個月的24、25號10點到14點每隔一分鐘輸出一個date日期到/root/date.log文件中 。
? ~ crontab -l30 21 * * * /usr/local/etc/rc.d/lighttpd restart含義為:每晚的21:30重啟apache 。
基礎的設置和使用我們已經了解了 , 但是當我們創建完成cronjob任務后,卻經常發現crontab定時任務不執行 , 著實讓人郁悶!沒關系 , 往下看~
【crontab 安裝 crontab怎么配置】crontab定時任務不執行排查思路
兩個重要目錄文件
關于crontab任務 , 我們需要知道幾個目錄文件 。這些文件對于我們分析crontab定時任務不執行的原因非常有用 。
/var/log/cron , 用于記錄crontab任務執行日志的文件 , 不論執行成功與否都會被記錄 。/var/spool/mail/username , 用于記錄crontab任務執行失敗日志的文件 , linux系統中每個定時任務執行后 , 系統都會將 失敗的任務信息通過電子郵件的形式發送給當前系統用戶 。
執行失敗排查過程(舉例)
我創建一個定時任務每分鐘關閉一次iptables任務 , 但是iptables并未被關閉 。
查看日志 tail /var/spool/mail/root , 發現不存在這個service命令目錄 :
解決辦法修改:
? ~ crontab -l SHELL=/bin/sh PATH=PATH=/sbin:/bin:/usr/sbin:/usr/bin */1 * * * * service iptables stop 對于python腳本或者mongodb腳本無法定時執行都可以采用這種辦法解決 。
其他容易忽略導致無法執行cronjob的原因:
定時任務路徑問題 , 在cronjob中最好使用絕對路徑來定位腳本或者輸出文件 。腳本權限問題 , 修改腳本權限 , 通常來說chmod 777即可 。系統時間問題 , 校準系統時間 。crond服務問題 , 確保服務狀態正常 , service crond status 。
- 用手機ps怎么把模糊的照片變清晰 手機圖片有點模糊怎么用ps處理清晰
- 如何注冊公司和品牌商標 品牌商標是怎么注冊的
- 辦公圖片編輯軟件 加標題時間 辦公圖片編輯軟件用圖片剪錯了怎么辦
- 鮮蟲草花怎么吃
- net framework 3.5安裝步驟 .net framework3.5安裝
- 新鮮豆腐渣怎么做好吃
- 網速被限制了怎么辦? 被限制了網速有什么辦法嗎
- 云主機怎么建站 我有云服務器如何建站
- 冷凍披薩怎么用烤箱烤
- mac上怎么顯示隱藏文件 mac怎樣顯示隱藏文件夾
