日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

教你crontab定時(shí)執(zhí)行shell腳本 crontab安裝配置文件

linux系統(tǒng)提供at和crontab兩個(gè)命令來執(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í)執(zhí)行shell腳本 crontab安裝配置文件


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)前用戶crontab文件(文件保存路徑為/var/spool/cron/username) .
  • crontab -c dir -指定crontab的目錄 。
創(chuàng)建一個(gè)新的crontab文件【教你crontab定時(shí)執(zhí)行shell腳本 crontab安裝配置文件】在考慮向cron進(jìn)程提交一個(gè)crontab文件之前,首先要做的一件事情就是設(shè)置環(huán)境變量EDITOR 。cron進(jìn)程根據(jù)它來確定使用哪個(gè)編輯器編輯crontab文件 。大多數(shù)用戶都使用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í)間間隔頻率 。

教你crontab定時(shí)執(zhí)行shell腳本 crontab安裝配置文件


舉個(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í)讓人郁悶!沒關(guān)系,往下看~
crontab定時(shí)任務(wù)不執(zhí)行排查思路兩個(gè)重要目錄文件
關(guān)于crontab任務(wù),我們需要知道幾個(gè)目錄文件 。這些文件對(duì)于我們分析crontab定時(shí)任務(wù)不執(zhí)行的原因非常有用 。
  1. /var/log/cron,用于記錄crontab任務(wù)執(zhí)行日志的文件,不論執(zhí)行成功與否都會(huì)被記錄 。
  2. /var/spool/mail/username,用于記錄crontab任務(wù)執(zhí)行失敗日志的文件,linux系統(tǒng)中每個(gè)定時(shí)任務(wù)執(zhí)行后,系統(tǒng)都會(huì)將 失敗的任務(wù)信息通過電子郵件的形式發(fā)送給當(dāng)前系統(tǒng)用戶 。
執(zhí)行失敗排查過程(舉例)
我創(chuàng)建一個(gè)定時(shí)任務(wù)每分鐘關(guān)閉一次iptables任務(wù),但是iptables并未被關(guān)閉 。
查看日志 tail /var/spool/mail/root,發(fā)現(xiàn)不存在這個(gè)service命令目錄 :

教你crontab定時(shí)執(zhí)行shell腳本 crontab安裝配置文件


? ~ which service /usr/sbin/service ? ~ crontab -e */1 * * * * /usr/sbin/service iptables stop ,即可解決這個(gè)問題 。這個(gè)例子反映了一個(gè)普遍存在的現(xiàn)象,當(dāng)我們?cè)诋?dāng)前shell中執(zhí)行腳本沒有任何問題,但是一寫到cronjob中就會(huì)出現(xià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腳本無法定時(shí)執(zhí)行都可以采用這種辦法解決 。
其他容易忽略導(dǎo)致無法執(zhí)行cronjob的原因:

推薦閱讀