Linux定時任務正常的情況下是不可能不執(zhí)行的,但是小編今天發(fā)現在centos中定時任務發(fā)現沒有執(zhí)行了,下面就和小編一起來看問題分析與解決辦法.
昨天晚上讓運維幫我更新上線了一個shell腳本,并添加到定時任務中準備凌晨12點06分執(zhí)行,當我早上5點17醒來的時候,總感覺不對就去查郵件看看定時任務是否執(zhí)行了,一看沒有執(zhí)行,然后直接遠程到服務器,發(fā)現腳本執(zhí)行只用了6秒,說明腳本是被調用了,那么就直接排除了缺少執(zhí)行權限的問題,那到底是什么問題呢?隨后又手動執(zhí)行了一次,發(fā)現報錯說腳本中有回車換行符,奇怪了,突然明白是windows和linux的編碼格式不一樣,馬上用dos2unix對文件進行了轉碼,再執(zhí)行,一切正常了,這點值得注意.
現在總結一下:
定時任務沒有被執(zhí)行有以下兩種可能.
1、被執(zhí)行的腳本沒有執(zhí)行權限,這種情況 直接授權.
chmod 755 xxx.sh
2、被執(zhí)行的腳本編碼有問題,這種情況直接轉碼.
dos2unix xxx.sh
我們也可下載一個windows版的dos2unix,轉完碼后再上傳到Linux服務器.
補充:linux定時任務
每天早上6點
0 6 * * * echo "Good morning." >> /tmp/test.txt //注意單純echo,從屏幕上看不到任何輸出,因為cron把任何輸出都email到root的信箱了.
每兩個小時
0 */2 * * * echo "Have a break now." >> /tmp/test.txt
晚上11點到早上8點之間每兩個小時和早上八點:
0 23-7/2,8 * * * echo "Have a good dream" >> /tmp/test.txt
每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點
0 11 4 * 1-3 command line
1月1日早上4點
0 4 1 1 * command line SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //如果出現錯誤,或者有數據輸出,數據作為郵件發(fā)給這個帳號 HOME=/
每小時執(zhí)行/etc/cron.hourly內的腳本
01 * * * * root run-parts /etc/cron.hourly --Vevb.com
每天執(zhí)行/etc/cron.daily內的腳本
02 4 * * * root run-parts /etc/cron.daily
每星期執(zhí)行/etc/cron.weekly內的腳本
22 4 * * 0 root run-parts /etc/cron.weekly
crontab權限問題到/var/adm/cron/下一看,文件cron.allow和cron.deny是否存在
用法如下:
1、如果兩個文件都不存在,則只有root用戶才能使用crontab命令。
2、如果cron.allow存在但cron.deny不存在,則只有列在cron.allow文件里的用戶才能使用crontab命令,如果root用戶也不在里面,則root用戶也不能使用crontab.
3、如果cron.allow不存在,cron.deny存在,則只有列在cron.deny文件里面的用戶不能使用crontab命令,其它用戶都能使用.
4、如果兩個文件都存在,則列在cron.allow文件中而且沒有列在cron.deny中的用戶可以使用crontab,如果兩個文件中都有同一個用戶,以cron.allow文件里面是否有該用戶為準,如果cron.allow中有該用戶,則可以使用crontab命令.
新聞熱點
疑難解答
圖片精選