1 相關文件 2 3 4 /etc/crontab 5 /etc/cron.deny 設置哪一個用戶有權限運行 cron 任務 6 /var/spool/cron/root 7 /var/spool/cron/user 8 /var/log/cron 只要在這個 log 裏面出現的命令就說明 cron 任務執行了,執行失敗會向相應的用戶發送郵件 9 10 11 12 任務不執行及 cron 相關問題 13 14 15 開機自動運行 cron 的命令「 systemctl enable crond.service 」。 16 17 18 新建立的cron job,不會立刻執行,至少要過2分鐘才執行。若是重啓cron則立刻執行,使用 systemctl restart crond.service 重啓 cron 。 19 20 21 環境變量 22 23 Crontab任務的執行環境與手動執行時的執行環境不一樣,編碼時,儘可能經過全路徑名引用文件或調用命令,或者將引用的文件或者命令的路徑添加到環境變量中,其默認環境變量以下 24 SHELL=/bin/sh 25 USER=root 26 PATH=/usr/bin:/bin 27 PWD=/root 28 SHLVL=1 29 HOME=/root 30 LOGNAME=root 31 _=/usr/bin/env 32 33 我修改的環境變量以下 34 SHELL=/bin/bash 35 PATH=/bin:/lib64:/sbin:/usr/bin:/usr/lib64:/usr/sbin:/usr/local/bin:/usr/local/lib64:/usr/local/sbin 36 MAILTO=root 37 LANG=zh_CN.UTF-8 38 HOME=/root 39 USER=root 40 LOGNAME=root 41 DISPLAY=:0 42 43 44 須要圖形化桌面的程序須要指定桌面環境 45 46 任務是「 firefox 」,不執行,也不發郵件給此用戶,而是發給了 root ,郵件報告是「 no display specified 」。 47 解決方法是添加環境變量「 DISPLAY=:0 」,重啓cron任務。 48 "export DISPLAY=:0" and then I did a "xhost +" and now its working fine. I also did a "/usr/bin/firefox $myHost". Now its working fine. Thank you ==============http://askubuntu.com/questions/417111/open-firefox-from-bash-file-error-no-display-specified 49 50 51 肯定用戶是否能夠建立 cron 任務 52 53 在 /etc/cron.deny 裏設置用戶權限。 54 55 56 Crontab任務的輸出重定向文件無寫權限 57 58 一般狀況下,在添加crontab任務以前,都會手動執行一下待添加的crontab任務,此時,經過重定向產生的文件,只執行該任務的用戶有寫權限,由sudo -u指定的用戶並無寫權限。本質緣由是sudo –u對重定向符不起做用。如此,在添加crontab任務,以sudo –u中指定的用戶身份運行時,因爲對重定向文件無寫權限,crontab任務會安靜的失敗 59 60 61 Crontab 任務配置文件 owner 不是 root 62 63 在添加crontab任務時,若是配置文件owner不是root,任務會失敗(志遙之前也提起過),不過這種失敗,能夠在cron日誌中看到以下錯誤信息: 64 (*system*)WRONG FILE OWNER 65 66 67 Crontab 任務配置文件爲單行 68 69 Crontab 任務都是單行,可若是配在配置文件中,任務字符串後沒有換行符,這個任務就有可能也會靜悄悄地失敗。爲安全起見,建議多一下按下回車鍵。 70 71 72 cron 會忽略點系統的i18n,默認使用posix的來decode,致使awk識別錯誤。 73 74 75 cron 配置文件從其餘機器複製時沒有更新文件的建立時間,這個cron任務的時間屬性不變,這個cron任務有可能不執行,須要用 touch 更新下時間「 sudo touch /var/spool/cron/user 」。 76 77 78 crontab中「%」要轉義 79 80 在crontab中%是有特殊含義的,表示換行的意思。若是要用的話必須進行轉義\%,如常常用的date ‘+%Y%m%d’在crontab裏是不會執行的,應該換成date ‘+\%Y\%m\%d’`。 81 82 83 當crontab忽然失效時,能夠嘗試重啓 cron 解決問題,或者查看日誌看某個job有沒有執行/報錯tail -f /var/log/cron。 84 85 86 不要亂運行「 crontab -r 」。它從 Crontab 目錄( /var/spool/cron )中刪除用戶的 Crontab 文件,刪除了該用戶的全部crontab都沒了。 87 88 89 每條 JOB 執行完畢以後,系統會自動將輸出發送郵件給當前系統用戶。日積月累,很是的多,甚至會撐爆整個系統。因此每條 JOB 命令後面進行重定向處理是很是必要的: >/dev/null 2>&1 。前提是對 Job 中的命令須要正常輸出已經做了必定的處理, 好比追加到某個特定日誌文件。 90 91 92 93 示例 94 95 96 # .---------------- minute (0 - 59) 97 # | .------------- hour (0 - 23) 98 # | | .---------- day of month (1 - 31) 99 # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... 100 # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR 101 #sun,mon,tue,wed,thu,fri,sat 102 # | | | | | 103 # * * * * * command [args] 104 105 106 59 12 * * * SHELL=/bin/bash PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/Wizard/.local/bin:/home/Wizard/bin MAILTO=root command 107 108 30 21 * * * /usr/local/etc/rc.d/lighttpd restart 每晚的21:30重啓apache 109 110 */1 * * * * root hwclock --hctosys 每隔1分鐘同步系統時鐘和硬件時鐘 111 112 * */1 * * * /usr/local/etc/rc.d/lighttpd restart 每一小時重啓apache 113 114 * 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart 晚上11點到早上7點之間,每隔一小時重啓apache 115 116 45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart 每個月一、10、22日的4 : 45重啓apache 117 118 10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart 每週6、週日的1 : 10重啓apache 119 120 0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart 在天天18 : 00至23 : 00之間每隔30分鐘重啓apache 121 122 0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart 每星期六的11 : 00 pm重啓apache 123 124 0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart 每個月的4號與每週一到週三的11點重啓apache 125 126 0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart 一月一號的4點重啓apache 127 128 129 130 參考 131 132 133 http://askubuntu.com/questions/417111/open-firefox-from-bash-file-error-no-display-specified 圖形桌面