使用 crontab 排程自動化你的工作
如果你需要執行一些固定的指令
這時候你可以使用 crontab
來讓電腦固定執行這些工作喔!
首先我們來開始編輯我們的 crontab
內容
編輯
1 | crontab -e |
如果你是系統管理者要編輯其他使用者的 crontab
內容
要加上 -u
參數來指定使用者喔
1 | crontab -u codingman -e |
指令
這時候需要設定執行的時間與週期還有你的指令
1 | # ┌───────────── 分鐘 (0 - 59) |
符號意義
接下來講解一下指令支援的符號意義
特殊字元 | |
---|---|
* | 代表接受任意時刻,例如若在分鐘那一欄填入星號則代表 0 ~ 59 皆可 |
, | 分隔多個不同時間點。例如若要指定 2:00、5:00 與 8:00 三個時間點執行指令,就可以在第二欄填入 2,5,8 |
- | 代表一段時間區間,例如若在小時填入 7-9 就代表從 7 點到 9 點的意思,也就是等同於 7,8,9 |
*/n | n 需要填入數字,這樣寫的意思就是「每隔 n 的單位」的意思,例如若在第一欄填入 */5 就代表每間隔五分鐘執行一次的意思,也可以寫成 0-59/5。 |
以下舉一些例子
1 | # 每天早上 8 點 30 分執行 |
你也可以在這裡直接寫寫看是不是你想要的效果
https://crontab.guru/
除錯
這裡也分享一下如何幫你的 crontab
除錯
1 | 20 7 * * * /path/to/script.sh > /tmp/script.log 2>&1 |
在這邊我們看到 script 的結果會被收集在 /tmp/script.log
裡面
而最後的 2>&1
則是可以在 scirpt 因為某些原因沒辦法執行的時候
收集到系統的錯誤訊息
選擇 Shell
在編輯 crontab
的時候,你可以透過以下指令來改變執行你的 script 的 shell
1 | SHELL=/bin/sh |
執行權限
最後提醒各位朋友
記得幫你的 script 加上執行權限
1 | sudo chmod +x /path/to/script.sh |
接著就可以迎接你的快樂美好人生 並沒有