cron(crontab) – Linux常用指令#01

想要讓Linux定期幫你自動執行處理例行公事?那就必須要學如何使用cron(crontab)系統排程!
本文將詳細介紹crontab指令、cron設定檔、cron執行頻率、額外記錄log。

指令說明

編輯cron設定檔

系統會用vim進入編輯cron設定檔的模式!
用設定檔語法修改完成,就像vim一樣『wq』存檔離開、並且重啟crond即可生效!

列出cron設定

移除所有排程

新增或移除可使用crontab使用者的指令

設定檔語法

設定完畢後,記得要重啟crond服務喔!

執行頻率   欲執行的指令
5 17 * * *   /usr/local/bin/python3.6 /home/andy/spider.py
0 4 1 * *   /sbin/reboot
* * * * *   /usr/local/bin/xxxx

執行頻率

時間單位說明

* * * *  * 用途說明
┗→ 星期(數值範圍:0~7),系統時間為0或7代表星期日、1為星期一,依序到6為星期六
━→ 月份(數值範圍:1~12),系統時間為第n月,就執行指令
━→ 日期(數值範圍:1~31),系統時間為第n號,就執行指令
━→ 小時(數值範圍:0~23),系統時間為n點,就執行指令
━→ 分鐘(數值範圍:0~59),系統時間為n分,就執行指令

符號使用方式

符號 功能說明
* 代表任何數值,換句話說,我不在乎是幾點幾分幾月的意思
*/x 代表每間隔x單位(時, 分, 日, 月…)的時間執行一次
a,b 以『,』分隔,列舉想執行的時刻,中間不能加空白
ab 代表a到b的時間區間內,都會執行指定的指令

十一種常用設定
(此處以『使用情境』做為主題,所以表格與前文的相反)

使用情境   星期
每小時的35分執行   35 * * * *
每20分鐘執行一次   */20 * * * *
每天早上4點整執行   0 4 * * *
每8小時執行一次   * */8 * * *
每天3~6點整執行   0 3-6 * * *
每個月5號執行   0 0 5 * *
每一季初執行   0 0 1 3,6,9,12 *
每年底時執行   59 23 31 12 *
每星期日執行   0 0 * * 7
每個工作日執行   0 0 * * 1-5
每個月的第一個星期六執行   0 0 * */1 6

欲執行的指令

欲執行的指令,最好輸入完整路徑,這樣才能完全避免系統變數(PATH)的問題!
可以利用『which』來查詢Linux指令對應到的完整路徑!

套用新設定

重新載入crond設定檔

進階設定

用root執行cron

贊助廣告

其實直接用sudo編輯cron設定檔就好了!

查看cron執行記錄

額外記錄執行Log

以Python為例,執行Python程式的過程中,我們可能會讓Python顯示『print()』特定訊息在螢幕上,而這些訊息可以透過下列設定方式存起來!

修改設定檔

『a >> b』:將執行指令a時,輸出在螢幕上的資訊導出至b檔案之中!

  • a:執行python script的指令『/usr/local/bin/python3.6 /home/andy/spider.py』
  • b:將執行結果導出至指定的log檔之中『/home/andy/Pythons/logs/spider.log 2>&1』

Andy Wang

站在巨人的肩膀上仍須戰戰兢兢!

One thought on “cron(crontab) – Linux常用指令#01

發表迴響

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