Linux教程網
Crontab不執行
今天做巡檢的時候發現crontab不執行了,我是這麼寫的:
0 09,15 * * * sh /beaprj/dailyreport/dailyreport.sh >/beaprj/dailyreport/`hostname`.log
08 11,16 * * * sh /beaprj/dailyreport/log/backupchecklog.sh
但是上面的他條命令執行,只有下面這條命令不執行。
解決辦法:
在網上查了查說可能是路徑的問題,然後我把backupchecklog.sh腳本裡面的路徑全部改成了絕對路徑,mail命令查看報錯為:cp: cannot stat `/beaprj/dailyreport/log/-.log': No such file or directory,應該還是路徑的問題把前面的路徑去掉報錯為:
cp: invalid option -- .
Try `cp --help' for more information.
-
看來他是把那個變量認成是“-”了,奇怪,繼續研究吧
我原來的腳本是這樣的:
WORKPATH=/beaprj/dailyreport/log/
BACKPATH=/beaprj/dailyreport/log/log/
DATE=`date +%Y-%m-%d`
#echo $DATE
cd $WORKPATH
ls -l *.log|awk '{print $7"-"$8}'|awk -F: '{if($1 <= 12) {print"AM-" $2} else {print "PM-" $2}}'>${WORKPATH}list
for i in `cat ${WORKPATH}list`
do
FILENAME=`echo $i|awk -F- '{print $3"-"$4}'|awk -F. '{print $1}'`
APM=`echo $i|awk -F- '{print $1}'`
cp ${WORKPATH}${FILENAME}".log" ${BACKPATH}${FILENAME}"_"${DATE}"_"${APM}.log
done
#echo END========
經過反復測試發現ls -l *.log|awk '{print $7"-"$8}'|awk -F: '{if($1 <= 12) {print"AM-" $2} else {print "PM-" $2}}'>${WORKPATH}list在這裡倒進來的list文件裡面的東西不符合,和預期的不一樣,繼續研究吧
後來單獨執行了一個腳本為(這裡把路徑改成了絕對路徑):
ls -l /beaprj/dailyreport/log/*.log | awk -F"/" '{print $1"-"$5}'>/beaprj/dailyreport/log/list
執行結果list裡面為-rwxrwxrwx 1 root root 1314 11-18 08:57 -EMIS-APP1.log
但是這個腳本在crontab裡面執行結果為:
-rwxrwxrwx 1 root root 1314 Nov 18 08:57 -EMIS-APP1.log
仔細看紅色部分,這樣執行完的後如果加上awk '{print $7"-"$8}那樣顯示的結果就不一樣了,我也沒弄明白為什麼crontab與外面不一樣,請高手指點,但是把上面的awk改成awk '{print $8"-"$9},crontab就會正常運行了,但是正常情況下就會有報錯。
到此問題解決
問題總結:這裡應該不是絕對路徑的問題,問題出在用ll看文件屬性的時候外界顯示11-18但是crontab裡面執行就會顯示Nov 18 就這麼簡單
Copyright ©
Linux教程網 All Rights Reserved