天天看點

crontab排查一例

首先QA部門回報過來有70台機器在work使用者下周期性定時任務無法執行,其他的400台伺服器執行此指令沒有問題,

crontab -e中寫入:

44 */4 * * * `source /etc/profile;source /home/work/.bash_profile;/home/work/staf/extbin/atd/atdupdate`

首先我們從crontab入手,把此指令拿出來單獨執行,沒有問題。

第二:我把他得日志都列印到/home/work/xiaowei.log中,如下所示:

44 */4 * * * `source /etc/profile;source /home/work/.bash_profile;/home/work/staf/extbin/atd/atdupdate >>/home/work/xiaowei.log 2>&1`

這樣暴露出幾台機器因為/home/work空間不足寫入不進檔案中。檢視指令:

[[email protected] /]# du -sh /home/work  #s是彙總,h是以更優雅的方式顯示

459G    /home/work

[[email protected] /]# df -lh

Filesystem            Size  Used Avail Use% Mounted on

/dev/cciss/c0d0p2     8.7G  4.0G  4.7G  46% /

/dev/cciss/c0d0p3     462G  460G  2.2G 100% /home

這幾台問題解決後,我們就開始看第二個問題:/home/work/xiaowei.log為空。

我們确認兩點:

    第一:crond程序是否存在

    [[email protected] /]# service crond status

    crond (pid 16924 2416) is running...

    第二:crontab中指令是否執行

    [[email protected] /]# tail /var/log/cron

    Oct 13 14:09:01 db-testing-ps1110 crond[16712]: (work) CMD (`source /etc/profile;/home/work/staf/extbin/atd/atdupdate >>/home/work/xiaowei.log 2>&1`)

沒有打日志出來,我們進行的操作是service crond restart 和service syslog restart 

這樣我們又清理出一批機器出來。

          第三:确認指令問題:我們執行了一條最簡單的指令:

    * * * * * mail -s "aaaaa" [email protected] </etc/passwd

    這樣又把一批crontab本身有問題的篩選出來了。

    第四:指令的問題,我們通過分指令執行的方式:

    首先測試他的基本指令:/home/work/staf/extbin/atd/atdupdate能夠列印出日志,然後測試source /etc/profile /home/work/staf/extbin/atd/atdupdate 也能列印出日志,但是把指令寫全就列印不出日志了,說明問題出在source /home/work/.bash_profile中。

    找到這個檔案有問題的地方修改掉,就好了。

    這裡面說明了幾個問題,大公司的機器底層軟體比較混亂,程式是你灌我也灌,系統參數你改我也改,這個是由于産品上線頻率和打更新檔的頻率很快,造成機器基礎環境不統一。這裡面最好有一個一鍵還原的意味在裡面最好

本文轉自guoli0813 51CTO部落格,原文連結:http://blog.51cto.com/guoli0813/405163,如需轉載請自行聯系原作者