不知道大家是否都有同樣的煩惱? 剛學會 crontab 時,始終不確定自己的設定是否正確,每次設定完都不確定是否有照預期的跑,在這我分享兩招可以讓大家確定自己的 crontab 是否正確設定!
首先,其實不用擔心語法錯誤的問題,就跟 Apache Config 一樣,如果格式有誤,在你儲存 crontab config 時就不會讓你儲存囉! 但如果你想驗證你設定的時間是否和預期的一樣,比如你可能以為你設定的是每五天執行一次,最後卻變成每月第五天執行一次,這兩者就差很多囉,別笑! 因為我就是幹過這種蠢事的人哈。
要驗證排程時間,第一招,可以透過網路上許多的 crontab tester 來確認,這邊就介紹其中一款 crontab.guru ,可以將你寫好的排程字串放入,軟體就會用「人能理解」的方式顯示出來,以及「最近五次執行」的時間哦!
第二招,你可能還是對線上工具不放心,其實在 Linux 裡面每次執行 crontab 都會被記錄在 syslog 裡面,除了可以驗證是否有按照預定時間執行外,如果你排程執行的程式有輸出資訊,也可以在這裡看到。 注意,是搜尋大寫的「CRON」,別寫成小寫,這兩者差很多哦!
grep CRON /var/log/syslog*
你會看到像這樣的結果:
Jan 20 04:30:01 CODERTW CRON[25813]: (root) CMD (service apache2 restart)
最前面是日期,最後面則是執行的指令
如果執行後有太多 CRON log 的話,也可以試試看兩層的 grep 來找出需要的紀錄。更詳細的寫法可以參考 Linux Grep Tips – 搜尋有指定字串的列
grep CRON syslog.1 | grep -E "apache|backup"
提醒
- 因為 syslog 會分多個檔案,所以如果沒看到執行的紀錄出現也別緊張,可能是在壓縮檔裡面。
- 如果時間不如預期,記得檢查你伺服器的時區設定,試試在 Terminal 輸入 date 看看現在時間。