天天看點

Linux定時任務不執行排查方法

實作linux定時任務有:cron、anacron、at等,但平常工作中接觸到的是cron服務。cron是服務名稱,crond是背景程序,crontab則是定制好的計劃任務表。項目中經常用到定時任務實作某些功能,最近遇到定時任務不執行的情況,由于之前對這個不太了解,費時費力,最後總算找到問題所在。是以想跟大家分享一下排查方法,以後少走彎路。

1.檢視crond服務是否執行。

通過指令pgrep crond或/sbin/service crond status可檢視到crond的程序pid,可以确定crond服務是否在運作。

2. 檢視cron服務是否起作用:

使用指令sudo tail –f /var/log/cron

隻要在這個log裡面出現指令就說明執行了。走到這一步的時候,我發現log裡邊并沒有執行的記錄,那說明我的定時任務并沒有執行。

3. 那麼接下來就要排查為什麼沒有執行,大概有以下幾種情況:

(1)腳本:腳本問題導緻crontab不執行的機率是很高的,也是最為常見的,那沒辦法,隻能檢視腳本。可以将腳本手動執行下,看是否報錯,若報錯就檢查腳本;

手動執行成功,排查是否為環境變量導緻crontab執行失敗。任務的執行環境為目前使用者或指定使用者的執行環境,是以,編碼時,盡量通過全路徑名引用檔案或調用指令,或者将引用的檔案或者指令的路徑添加到環境變量中。

(2)系統時間不同,也會導緻定時任務不執行,此時你就要檢視系統時間

Date(檢視)

Date –s mm/dd/yy (更改系統時間)

(3)crontab 守護程序死掉了,重新開機該程序;

service crond restart

(4)腳本編碼有問題;

腳本在window下編寫,傳到linux下後報“锘?!/bin/bash”,用vi編輯器建立新shell腳本,輸入内容後儲存。

(5)檢視腳本是否有可執行權限。必須保證執行腳本的使用者有執行改檔案的權限。

繼續閱讀