1、先手動執行定時任務以此來判斷指令碼是否有問題。
2、確認伺服器是否開啟定時任務計劃服務
命令:service crond status service crond start
1 2
3、檢查定時任務配置的文法
crontab -l SHELL=/bin/bash 0 15 * * 1-5 cd /root/ye/project/StatShareDataProject/&& ./start.sh
1 2 3
可直接複製cd /root/ye/project/StatShareDataProject/&& ./start.sh來運行,若可以正常運行再另做判斷。
1 2
4、 查看crontab執行記錄
如果出現了crontab定時任務不執行的情況,首先需要定位問題,那麼就需要通過日誌來確定問題所在。
crontab的日誌位置一般位於/var/log/cron,利用下面的語句即可查看日誌。
tail -f /var/log/cron
1
上面的/var/log/cron只會記錄是否執行了某些計劃的指令碼,但是具體執行是否正確以及指令碼執行過程中的一些資訊linux會通過郵件形式發送到給該使用者。
對於root使用者該郵件記錄位於/var/spool/mail/root,通過以下命令可以查看最近的crontab執行情況。
tail -f /var/spool/mail/root
1
mail郵件一般只會記錄指令碼執行成功與否,如果執行失敗,無法給出進一步的錯誤資訊,這時需要我們將語句執行的錯誤資訊重新導向至檔案中,這樣可以很方便的查看錯誤資訊。下面就給出了一個簡單的例子
0 6 * * * /root/script/ss.sh >> /root/for_crontab/mylog.log 2>&1
1
上述語句表示把錯誤輸出和標準輸出都輸出到mylog.log中,在執行的時候會將命令執行的相關資訊記錄至mylog.log檔案中。 註:通過定時任務執行的程式需要手動將其 stop 掉(就算該程式手動執行只需要幾秒就可執行完了,但是通過crontab設定成定時任務執行時,其執行後將一直佔有著該線程,並且不會因為程式跑完了就自動停止該線程),要不然在下次再執行時會發現原先的程式還在執行中。 增加了crontab任務後,在/var/spool/cron目錄下會有一個當前登入帳號命名的檔案。比如我的登入帳號是root。則會存在一個root檔案。該檔案的內容就是剛添加的crontab任務。
常見錯誤一:
定時任務配置好後,正常執行,但是執行過程中出現如下錯誤
nohup: failed to run command ‘java’: No such file or directory
1
解決方案:
往執行指令碼中添加如下命令便可,這是因為cron並沒有載入java相關的設定檔,所以我們需要在指令碼中手動將其加入。
source /etc/profile添加後指令碼整體如下#!/bin/bashsource /etc/profilePROJECTNAME=UseAndUnuseDatapid=`ps -ef |grep $PROJECTNAME |grep -v "grep" |awk '{print $2}'`if [ $pid ]; then echo "$PROJECTNAME is running and pid=$pid" kill -9 $pid echo "Start success to start $PROJECTNAME ...." nohup java -jar UseAndUnuseData.jar >> catalina.out 2>&1 &else echo "Start success to start $PROJECTNAME ...." nohup java -jar UseAndUnuseData.jar >> catalina.out 2>&1 &fi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
遇到的一個坑:
定時任務如下:
crontab -e
#周一到周五每天下午三點開始運行程式,統計基本資料01 15 * * 1-5 cd /root/yechunbo/project/StaticBasicData/&& ./start.sh
1 2
手動執行正常,但是定時任務執行出錯,具體錯誤如下所示:
/bin/sh: root: command not found
1
按照網上各種方法試過之後發現還是報一樣的錯。
因此筆者將/var/spool/cron/root 檔案刪除掉,重新設定時任務,竟然神奇地可以正常執行了。原理還沒想通,不過至少可以正常執行了…. 著作權聲明:本文大部分為博主原創,轉載請註明出處。 https://blog.csdn.net/u013850277/article/details/54344805
來源:https://blog.csdn.net/u013850277/article/details/54344805