1. 程式人生 > >crontab定時任務不執行

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沒有生效。