實現linux定時任務有:cron、anacron、at等,但平時工作中接觸到的是cron服務。 cron是服務名稱,crond是後台進程,crontab是定做好的計畫任務表。專案中常常用到定時任務實現個別功能,近來遇見定時任務不執行的情況,因為之前對這個不太了解,費時吃力,最後終於找到問題所在。為此想跟你們分享一下排查技巧,之後少走彎路。
1.查看crond服務是否執行。
透過指令pgrepcrond或/sbin/servicecrondstatus可查看到crond的進程pid,可以確定crond服務是否在運作。
2.查看cron服務是否起作用:
使用指令sudotail–f/var/log/cron
只要在這個log上面出現指令就表示執行了。走到這一步的時侯linux 輸入法,我發覺log裡面並沒有執行的記錄,那表示我的定時任務並沒有執行。
3.這麼接出來就要排查為何沒有執行,大約有以下幾種情況:
(1)腳本:腳本問題引起crontab不執行的機率是很高的,也是最為常見的,那沒辦法,只能查看腳本。可以將腳本自動執行下,看是否報錯,若報錯就偵測腳本;
自動執行成功,排查是否為環境變數引起crontab執行失敗。任務的執行環境為目前使用者或指定使用者的執行環境linux定時任務不執行,所以,編碼時linux定時任務不執行,盡量透過全路徑名引用檔案或呼叫命令,或則將引用的文件或則命令的路徑加入環境變數。
(2)系統時間不同,也會造成定時任務不執行,此時你就要查看系統時間
Date(查看)
Date–smm/dd/yy(修改系統時間)
(3)crontab守護程式跑掉了,重啟該程式;
servicecrondrestart
(4)腳本編碼有問題;
腳本在window下編撰linux rar,傳到linux下後報“鋨?!/bin/bash”,用vi編輯器新建新shell腳本,輸入內容後保存。
(5)查看腳本是否有可執行權限。必須確保執行腳本的使用者有執行改文件的權限。
以上是Linux 定時任務不執行怎麼辦?一文教你排查方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!