原址如下:
http://blog.itechol.com/space-33-do-blog-id-4945.html
自訂 crontab記錄檔位置
crontab是Linux下最常用的計劃任務服務。本文跟大家分享一下有關linux crontab日誌存放的一些心得,希望本文能教會你更多東西。
預設情況下,crontab中執行的日誌寫在/var/log下(以CentOS為例進行說明),如:
#ls /var/log/cron*
/var/log/cron /var/log/cron.1 /var/log/cron.2 /var/log/cron.3 /var/log/cron.4
如果日誌有問題,可以參考以下做法:
為crontab增加日誌
crontab的日誌比較簡單,當crond執行任務失敗時會給使用者發一封郵件。恰巧在我們的幾台WEB伺服器上發現一些問題:
簡單環境說明:
公司有WEB1 WEB2 WEB3 三台應用伺服器,其中這三台伺服器通過rsync實現資料即時同步;WEB1 為rsync用戶端,WEB2 WEB3 為rsync服務端,WEB1上定製rsync同步指令碼通過cron任務實現定時向WEB2 WEB3同步資料。在使用過程中發現cron任務能正常執行,但是同步資料沒有成功;使用手動方式一切正常,為什麼。。
查看日誌發現如下顯示:
Jul 20 10:47:01 webmaster crond[3193]: (root) CMD (/root/shell/rsync.sh)
而且crond發郵件也失敗了。
如何查看cron任務是否真正執行。
考慮到是否為crontab中的任務增加自己的日誌,這樣出錯後,比較容易看到原因。
於是我做了如下操作:
crontab -e //編輯cron任務,以下為cron任務內容
# rsync aplication from /www
*/1 * * * * /root/shell/rsync.sh >>/root/shell/for_crontab/mycron.log 2>&1
//紅色部分為添加的內容
//把錯誤輸出和標準輸出都輸出到mycron.log中。
通過查看mycron.log就可以清楚的知道cron任務是否執行正確了。。。
以下是我的mycron.log檔案中顯示的內容
[root@webmaster for_crontab]# head -n 10 mycron.log
rsync: failed to open exclude file rules.txt: No such file or directory (2)
rsync error: error in file IO (code 11) at exclude.c(1000) [client=2.6.8]
從中可以看出是我的rsync指令碼中使用exclude排除檔案中出了錯誤。。。
附:rsync指令碼內容
#!/bin/sh
# rsync aplication from /www
/usr/bin/rsync -vzrtopg --progress --delete --exclude-from=/root/shell/rules.txt --password-file=/etc/rsync/rsyncd.scrt /www/* webmaster@192.168.1.122::www
/usr/bin/rsync -vzrtopg --progress --delete --exclude-from=/root/shell/rules.txt --password-file=/etc/rsync/rsyncd.scrt /www/* webmaster@192.168.1.123::www
~
紅色標識部分為錯誤根源,因為之前沒有指明exclude檔案的絕對路徑,導致cron任務找不著排除檔案,故不能執行指令檔。