crontab定時任務不執行
今天在Liunx系統裡面寫了一個定時重啟tomcat的.sh指令碼檔案,單獨執行這個.sh檔案可以正常執行,但是加入到Liunx的定時任務crontab裡面發現根本就不執行,於是就逐步排查問題?
1、確認伺服器是否開啟定時任務計劃服務,只有root使用者才能對crond服務進行開啟和關閉。
執行命令檢視是否開啟了crond服務:service crond status。
如果出現如下圖所示,表示 crond服務開啟
2、如果crond服務沒有開啟,執行啟動 crond服務命令,啟動crond服務
啟動crond服務:service crond start
附帶一下操作crond的其它命令(crond在Liunx 上面的安裝路徑為:/etc/init.d/crond):
/etc/init.d/crond start = service crond start #啟動crond服務
/etc/init.d/crond stop = service crond stop #停止crond服務
/etc/init.d/crond status = service crond status #crond服務狀態
/etc/init.d/crond condrestart = service crond condrestart
/etc/init.d/crond try-restart = service crond try-restart
/etc/init.d/crond reload = service crond reload
/etc/init.d/crond force-reload= service crond force-reload
chkconfig --level 2345 crond on #crond 加入到開機啟動
3、如果執行上面兩步之後,定時任務還是不執行的話,就指定shell直譯器命令,執行命令:crontab -e,在頭部加入:SHELL=/bin/bash,截圖如下:
4、如果要執行的1.sh檔案裡面引用到了2.sh,在crontab 裡面又有用的是絕對路徑: */30 * * * * /opt/1.sh,那麼如果在1.sh中引用的2.sh不是寫的絕對路徑的話,執行1.sh
會報找不到路徑的錯誤,解決辦法是:先進入該目錄,然後在執行指令碼。*/30 * * * * /opt/ && ./1.sh
5、如果到現在還不能執行的話,就要看看root使用者的crontab是否生效,執行命令:crontab -u root /var/spool/cron/root,然後重啟crontab服務:service crond restart
我的天竟然可以了,原來折騰了這麼久,是我的root使用者的crontab沒有生效。