Linux Crontab 設定的定時任務沒有啟動的排查__Linux

來源:互聯網
上載者:User

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.