
文章插圖
linux系統(tǒng)提供at和crontab兩個(gè)命令來(lái)執(zhí)行定時(shí)任務(wù) , at主要針對(duì)一次性的定時(shí)任務(wù) , crontab則執(zhí)行周期性的定時(shí)任務(wù) 。在linux運(yùn)維中使用較多的還是cronjob , 當(dāng)安裝完linux系統(tǒng)后 , linux會(huì)自動(dòng)啟動(dòng)crond進(jìn)程 , 這是周期性任務(wù)的守護(hù)進(jìn) 程 , 用于檢查是否有需要執(zhí)行的定時(shí)任務(wù) 。
crontab命令常用參數(shù):crontab file [-u user] -用指定的文件替代目前的crontab.crontab -[-u user] -用標(biāo)準(zhǔn)輸入替代目前的crontab.crontab -l [user] -顯示當(dāng)前存在的crontab任務(wù) .crontab -e [user] -用于編輯創(chuàng)建crontab文件任務(wù) .crontab -r [user] -刪除當(dāng)前用戶(hù)crontab文件(文件保存路徑為/var/spool/cron/username) .crontab -c dir -指定crontab的目錄 。創(chuàng)建一個(gè)新的crontab文件在考慮向cron進(jìn)程提交一個(gè)crontab文件之前 , 首先要做的一件事情就是設(shè)置環(huán)境變量EDITOR 。cron進(jìn)程根據(jù)它來(lái)確定使用哪個(gè)編輯器編輯crontab文件 。大多數(shù)用戶(hù)都使用vi , 如果你和小編一樣也是使用vi , 直接編輯$ HOME目錄下的. profile文件 , 在當(dāng)中加入:
EDITOR=vi; export EDITOR ~ source .bash_profilecrontab命令時(shí)間格式設(shè)置crontab任務(wù)字段共六個(gè) , 前五個(gè)為時(shí)間字段分別為:分 時(shí) 日 月 周;第六個(gè)為執(zhí)行命令字段 , 可以是單條命令或者腳本文件 。時(shí)間字段可以使用特殊字符 , ’*’代表所有可能值 , ’,’代表選定時(shí)間段 , ’-‘代表選定時(shí)間范圍 , ’/’代表時(shí)間間隔頻率 。
舉個(gè)例子:
? ~ crontab -l */1 10-14 24,25 * * echo `date` >> /root/date.log 含義為:每個(gè)月的24、25號(hào)10點(diǎn)到14點(diǎn)每隔一分鐘輸出一個(gè)date日期到/root/date.log文件中 。
? ~ crontab -l30 21 * * * /usr/local/etc/rc.d/lighttpd restart含義為:每晚的21:30重啟apache 。
基礎(chǔ)的設(shè)置和使用我們已經(jīng)了解了 , 但是當(dāng)我們創(chuàng)建完成cronjob任務(wù)后,卻經(jīng)常發(fā)現(xiàn)crontab定時(shí)任務(wù)不執(zhí)行 , 著實(shí)讓人郁悶!沒(méi)關(guān)系 , 往下看~
crontab定時(shí)任務(wù)不執(zhí)行排查思路兩個(gè)重要目錄文件
關(guān)于crontab任務(wù) , 我們需要知道幾個(gè)目錄文件 。這些文件對(duì)于我們分析crontab定時(shí)任務(wù)不執(zhí)行的原因非常有用 。
/var/log/cron , 用于記錄crontab任務(wù)執(zhí)行日志的文件 , 不論執(zhí)行成功與否都會(huì)被記錄 。/var/spool/mail/username , 用于記錄crontab任務(wù)執(zhí)行失敗日志的文件 , linux系統(tǒng)中每個(gè)定時(shí)任務(wù)執(zhí)行后 , 系統(tǒng)都會(huì)將 失敗的任務(wù)信息通過(guò)電子郵件的形式發(fā)送給當(dāng)前系統(tǒng)用戶(hù) 。執(zhí)行失敗排查過(guò)程(舉例)
我創(chuàng)建一個(gè)定時(shí)任務(wù)每分鐘關(guān)閉一次iptables任務(wù) , 但是iptables并未被關(guān)閉 。
查看日志 tail /var/spool/mail/root , 發(fā)現(xiàn)不存在這個(gè)service命令目錄 :
? ~ which service /usr/sbin/service ? ~ crontab -e */1 * * * * /usr/sbin/service iptables stop , 即可解決這個(gè)問(wèn)題 。這個(gè)例子反映了一個(gè)普遍存在的現(xiàn)象 , 當(dāng)我們?cè)诋?dāng)前shell中執(zhí)行腳本沒(méi)有任何問(wèn)題 , 但是一寫(xiě)到cronjob中就會(huì)出現(xiàn)各種問(wèn)題 , 這個(gè)是因?yàn)閏ronjob并不會(huì)自動(dòng)加載我們腳本所需的各種環(huán)境變量 , 我們需要手動(dòng)添加到cronjob任務(wù)中才能確保cronjob正常運(yùn)行 。
解決辦法修改:
? ~ crontab -l SHELL=/bin/sh PATH=PATH=/sbin:/bin:/usr/sbin:/usr/bin */1 * * * * service iptables stop 對(duì)于python腳本或者mongodb腳本無(wú)法定時(shí)執(zhí)行都可以采用這種辦法解決 。
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問(wèn)題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專(zhuān)業(yè)人士給予相關(guān)指導(dǎo)!
「愛(ài)刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助:- 教你幾招跳繩的技巧
- 一招教你輕松退買(mǎi)房定金的方法 退定金的7個(gè)絕招
- 教你免費(fèi)設(shè)計(jì)自己的logo 免費(fèi)在線(xiàn)生成圖標(biāo)
- 緩解10大方法 打嗝不止怎么辦 教你止嗝小方法
- 每日一招教你快速治好痔瘡 痔瘡佳的自愈方法
- 教你跳肚皮舞瘦腰的小技巧
- 教你學(xué)“24小時(shí)頸椎保養(yǎng)法”
- 教你設(shè)置單元格選填 excel單元格設(shè)定選項(xiàng)如何取消
- QQ和微信的定時(shí)喚醒系統(tǒng)是什么意思 定時(shí)喚醒系統(tǒng)是什么意思
- 教你如何找到男人的愛(ài)情死穴
