Linux cron 計劃任務日誌跟蹤


場景:  需要在系統的cron中啓動一個計劃任務,跑的是一個shell腳本,腳本中大致意思是切換至

        abc用戶執行一個php文件(例如: /data/soft/auto.php),那麼現在問題來了,腳本的內

        容如下: 

         

#!/bin/bash

sudo -u abc /data/soft/auto.php
echo ' >>> auto success !!! ’

    你會神奇的發現,系統的/var/log/cron日誌中已經顯示auto success,但是這個程序依然

是沒有執行,你怎麼知道沒執行呢?因爲程序有日誌,日誌沒開始刷.


       那麼下一步該怎麼來查找程序未執行的原因?思路是每次執行cron的時候必定會產生記錄的文件

根據系統版本查找文件的位置:

       

操作系統版本4/5 查看 /var/spool/clientqueue/

操作系統版本6    查看 /var/spool/postfix/maildrop/

系統的postfix停掉,沒停掉就直接敲mail命令看

進入對應的目錄後可以使用 ls -lt|head 命令來截取最後執行的10個cron日誌文件,根據時間來判定看

哪個文件,裏面必定有報錯.根據報錯來修改腳本或者系統屬性.


我遇到過的兩種情況:


 1. sudo系統默認警告需要tty,解決辦法:將/etc/sudoers文件中Defaults    requiretty註釋掉.

 2. 變量路徑引起的,加載你所需要的變量或者定義.


好久沒有寫,這個問題值得記錄,相信很多人還不知道這個排錯方式,這也是剛從別人那學的.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章