Crontab 主要是在做排程, 通常一般寫法大概都是如下:
0 0 * * * /usr/local/www/awstats/cgi-bin/awstats.sh
這種寫法規則如下:
分 時 日 月 週
對應表如下:
field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sun, or use names)
看到彥明長輩寫才知道有這種寫法:
@hourly /usr/local/www/awstats/cgi-bin/awstats.sh
使用 @hourly 對應的是 0 * * * *, 還有下述可以使用:
string meaning
------ -------
@reboot Run once, at startup.
@yearly Run once a year, "0 0 1 1 *".
@annually (same as @yearly)
@monthly Run once a month, "0 0 1 * *".
@weekly Run once a week, "0 0 * * 0".
@daily Run once a day, "0 0 * * *".
@midnight (same as @daily)
@hourly Run once an hour, "0 * * * *".
特別是看到 @reboot, 所以寫 rc.local 的東西, 也可以使用 @reboot 寫在 crontab 裡面?... XD
找時間再實驗看看. 更多詳細的應用, 可以 man 5 crontab 🙂
註: sudo crontab -e -u www-data # 可以編輯 www-data 權限的 crontab
原來還有這一招阿! 受教了~
真的是领教了,原来一直按部就班的写,多谢
我也是看到長輩這樣寫, 就趕快記下來~ 🙂
我想 @reboot 的指令要等到 crond 啟動後才能執行,而 rc.local 應該可以更早之前就開始跑。
嗯嗯, 不過通常 rc.local 都是整個 rc.d 這些跑完後最後執行的, 所以跟用 @reboot 來跑應該差不多意思?...
這樣子就可以讓程式 Push 輕鬆點吧~
如果可以寫在 crontab 裡面, 就不用去動到系統囉~ 🙂
(不知道寫在自己個人的 crontab 裡面, 到底會不會被執行到, 也是要測試看看的. XD)
有點小筆誤的樣子
是耶.. 確實是筆誤, 感謝指正~~ Orz..
Tsung 兄的文章對小弟的貢獻實在太大了,今天找 Linux 相關的資料就連進來好幾次,之前寫 PHP 也是三不五時就會連進來 XD
用 Crontab @reboot 的好處,就是簡單方便不用煩惱執行順序和不同作業系統的開機啟動方法,不過今天測試發現寫在 Crontab 好像有時候會沒執行到,希望只是我的錯覺 😛
非常感謝~ 🙂
照理說應該都會被執行到, 如果沒有執行.... 就重新在寫一次.
最怕的是有時後有執行, 有時候沒執行... 這個.. 我也不知道該怎麼辦了. XD
Tsung 您好
感謝您的文章分享~
想請教您是否知道若固定排程執行時間過長
當下一周期到時
是會允許多排程同時執行?
還是一次只能執行一個排程呢?
謝謝
同時執行