Last Updated on 2022-01-06 by Clay
有時候,我們會希望我們寫好的程式能夠在每一天的『固定時間』自動執行,好比說每天早上爬取金融新聞、叫我們起床、在特定時段幫我們寄送郵件......
而在 Linux 中,有著個名為 crontab 的工具可以幫助我們設定排程來自動執行程式。今天就來簡單紀錄該如何設定 crontab 來完成這些功能。
crontab 設定
crontab 我們可以使用以下指令來查看是否有排程正在運行:
crontab -l
如果你的輸出為:
no crontab for "user_name"
那就代表目前沒有任何『排程』正在運行。
至於我們該如何設定 crontab 呢?我們可以使用以下指令直接開始撰寫:
crontab -e
(題外話:如果編輯 crontab 的編輯器不是你熟悉的,你可以使用 export EDITOR="editor name" 來設定你習慣的編輯器。比如說你習慣用 vim,那麼就可以使用 export EDITOR=vim 來將編輯器設定為 vim)
開始編輯之後,我們多半會看到這樣一個文件:
基本上,我們只需要按照『分鐘』、『小時』、『日期』、『月份』、『星期』五個欄位輸入,最後加上 command 即可。
- 分鐘: 0-59
- 小時: 0-23
- 日期: 1-31
- 月份: 1-12
- 星期: 0-6
* 代表任意。
比如說我有個想要執行的 test.sh 檔,然後我希望每天凌晨十二點都可以執行一次,那麼我就要寫下以下指令:
* 0 * * * sh /home/clay/test.sh
如果我有個 test.py 的 Python 程式希望可以每 5 分鐘執行一次,那麼我可以寫下:
*/5 * * * * python3 /home/clay/test.py
最好使用『絕對路徑』來指向要執行的檔案比較好哦。
References
- https://docs.oracle.com/cd/E19455-01/805-7229/6j6q8svfo/index.html
- https://man7.org/linux/man-pages/man5/crontab.5.html