歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux 下Crontab不執行

Linux 下Crontab不執行

日期:2017/2/28 16:02:59   编辑: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