crontab 配置、日誌使用記錄

公司服務器的系統爲CentOS 6.4,經常需要使用Crontab命令去執行一系列的應用腳本,也經常遇到種種的問題,現將自己在使用Crontab命令過程中遇到的一些問題彙總如下,以備後用。
格式說明
對於crontab命令的格式,借用網絡上一張超牛的圖片來說明吧:
這裏寫圖片描述

查看日誌的方法
當crontab命令未如預期計劃執行的時候,linux下可以通過查看crontab日誌回查任務hang住的具體原因,具體查看方法是查看文件/var/log/cron。

問題彙總
下面是自己在配置crontab的過程中遇到的一些問題,現記錄如下:
1.問題描述:
寫了一個腳本添加至crontab定時任務執行,測試的時候,使用手工運行shell命令執行成功,但是crontab定時任務卻並沒有執行;
解決方案:
這種問題是由於crontab執行是分用戶執行的,環境變量的導入會有問題,一般都需要對腳本的路徑及輸出日誌的路徑寫成絕對路徑,同時,在shell腳本中,增加配置文件source ~/.bash_profile,導入環境變量。

2.問題描述:
crontab 執行腳本需要將shell腳本的輸出重定向至日誌文件,日誌文件的命名方式爲日期.log,如20150101.log。
可以將crontab任務編寫如下:

test.sh>>./`date -d last-day +%Y%m%d`.log >&1

3.問題描述:
編寫了一個腳本test.sh,手工執行腳本 test.sh>>./date -d last-day +%Y%m%d.log >&1 運行沒有問題,日誌也按照日期格式生成了。但是把這個任務加入crontab以後,任務卻沒有正確執行;

* * * * * /app/test/dustbin/HY/test.sh>>/app/test/dustbin/HY/`date -d last-day +%Y%m%d`.log >&1 

查看了crontab的日誌,發現crontab任務下,shell的目錄路徑不完整了:
Dec 9 11:26:01 host_name CROND[8066]: (test) CMD (/app/test/dustbin/HY/test.sh>>/app/test/dustbin/HY/`date -d last-day +)
解決方案:
需要對上述腳本進行一次轉義的修改,修改後如下:

* * * * * /app/test/dustbin/HY/test.sh>>/app/test/dustbin/HY/`date -d last-day +\%Y\%m\%d`.log >&1 

修改後,crontab任務執行順利完成。

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