Crontab
Crontab 是 Linux 系統內建的工作排程機制,可以依照設定的時間執行例行性工作。
格式說明
在 crontab 文件中,最上方可以設定 crontab 參數:
1 | SHELL=/bin/bash # 使用的 shell |
接著設定工作排程內容,一行是一項工作排程,每行包含 6 個參數,依序是分
、時
、日
、月
、星期
以及要執行的 command
,詳細說明如下:
1 | * * * * * <command to be executed> |
參數特殊符號意義
*
: 代表任何時刻都接受。,
: 代表分隔時段。例如:0 6,18 * * * command
, 代表 6 點和 18 點都會執行 command。-
: 代表一段時間範圍。例如:30 12-15 * * * command
, 代表從 12 點到 15 點的每個 30 分都會執行 command。/n
: 代表每隔 n 單位間隔,n 為一個數字。例如:*/10 * * * * command
, 代表每隔 10 分鐘執行一次 command。
另外還有一些更方便的參數,可以取代前面 5 個參數:
@reboot
: 只在開機時執行一次。@yearly
: 每年執行一次,等同於0 0 1 1 * command
.@annually
: 和@yearly
一樣。@monthly
: 每月執行一次,等同於0 0 1 * * command
.@weekly
: 每周執行一次,等同於0 0 * * 0 command
.@daily
: 每天執行一次,等同於0 0 * * * command
.@midnight
: 和@daily
一樣。@hourly
: 每小時執行一次,等同於0 * * * * command
.
設定 crontab
了解 crontab 文件的內容後,接著撰寫要排程的內容,其中的 command
請使用 絕對路徑 避免錯誤。
通常我會另外寫一個 crontab file, 再透過以下指令來設定 crontab:
1 | $ crontab <crontab_file> |
但是要注意此方式會完全覆蓋原本的 crontab 內容,如果不想要另外寫一個 crontab file,也可以執行 $ crontab -e
直接編輯此使用者的 crontab 內容,編輯後存檔即可設定好 crontab 排程。
crontab 相關指令
$ crontab -l
: 列出使用者的 crontab 內容。$ crontab -e
: 編輯使用者的 crontab 內容。$ crontab -r
: 完全清除使用者的 crontab. (要小心使用!)
crontab 範例
這裡附上 crontab 的範例提供參考:
Ex. 每天 1 點執行 report.sh
:
1 | # crontab_file.txt |