Crontab 的寫法(@reboot, @yearly...)

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

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈Crontab 的寫法(@reboot, @yearly...)〉中有 12 則留言

  1. 嗯嗯, 不過通常 rc.local 都是整個 rc.d 這些跑完後最後執行的, 所以跟用 @reboot 來跑應該差不多意思?...
    這樣子就可以讓程式 Push 輕鬆點吧~
    如果可以寫在 crontab 裡面, 就不用去動到系統囉~ 🙂
    (不知道寫在自己個人的 crontab 裡面, 到底會不會被執行到, 也是要測試看看的. XD)

  2. Tsung 兄的文章對小弟的貢獻實在太大了,今天找 Linux 相關的資料就連進來好幾次,之前寫 PHP 也是三不五時就會連進來 XD

    用 Crontab @reboot 的好處,就是簡單方便不用煩惱執行順序和不同作業系統的開機啟動方法,不過今天測試發現寫在 Crontab 好像有時候會沒執行到,希望只是我的錯覺 😛

    1. 非常感謝~ 🙂
      照理說應該都會被執行到, 如果沒有執行.... 就重新在寫一次.
      最怕的是有時後有執行, 有時候沒執行... 這個.. 我也不知道該怎麼辦了. XD

  3. Tsung 您好
    感謝您的文章分享~
    想請教您是否知道若固定排程執行時間過長
    當下一周期到時
    是會允許多排程同時執行?
    還是一次只能執行一個排程呢?
    謝謝

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料