首先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,如需轉載請自行聯系原作者