Ubuntu 排程設定 :Crontab 排程使用教學
在linux系統中,如 ubuntu,cron 排程的資料是存在 /etc/crontab 中,我們可以直接輸入 sudo nano /etc/crontab 進行編輯。
1. Linux Cron 指令
-
crontab -l 列出該使用者擁有的 crontab 指令
-
crontab -e 編輯該使用者的 crontab 指令
-
crontab -r 將使用者的 crontab 全部清除!( 小心使用 )
-
crontab -u 改變排程的執行身分: crontab -u user filename
2. Cron 語法介紹
crontab 是 Linux 內建的機制,可以根據設置的時間參數來執行例行性的工作排程。
依序是 分鐘, 小時, 日期, 月份, 星期, command
參數為 0-59, 0-23, 1-31, 1-21, 0-6, 需要執行的command
※ 星期參數為 0 代表星期日
3. 參數特殊字符意義
【*】:星號,代表任何時刻都接受的意思
【,】:逗號,代表分隔時段。例如:30 9,17 * * * command,代表早上 9 點半和下午五點半都執行 command。
【-】:減號,代表一段時間範圍。例如:15 9-12 * * * command,代表從 9 點到 12 點的每個 15 分都執行 command。
【/n】:斜線,n 代表數字,表示每個 n 單位間隔。例如:*/5 * * * * command,代表每隔 5 分鐘執行一次 command。
■ 還有一些人性化的參數,一次取代全部五個數字參數
【@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效果一樣。
4. Cron 執行範例
-
每 5 分鐘執行一次:
- */5 * * * * root /usr/libexec/atrun
-
每 5 小時執行一次
- * */5 * * * root /usr/libexec/atrun
-
每天 AM 5:00 執行指令(星號與星號之間要有空隔)
- 00 05 * * * username /bin/bash /路徑/command
-
1 至 20 號每天執行一次
- 0 1 1-20 * * root /usr/libexec/atrun
-
當分針移到第 5 分時,執行此 cron
- 5 * * * * root /usr/libexec/atrun
-
當時針移到 1 點 1 分時,執行此 cron
- 1 1 * * * root /usr/libexec/atrun
-
每週一的 1 點 1 分,執行
- 1 1 * * 1 root /usr/libexec/atrun
-
2 月 29 日時針到 1 點 1 分,執行
- 1 1 29 2 * root /usr/libexec/atrun
-
8 點到 16 點每 5 分鐘執行一次 cron
- */5 8-16 * * * root /usr/libexec/atrun
設定完成後將 cron 重新啟動
/etc/init.d/cron restart
5. 如何讓 cron job 自動備份資料
範例是每天自動備份另一台機器的資料,但是時間一久 ,備份的資料會越來越多,最後硬碟會撐不住,所以又要加一個自動刪除舊檔的 cron job,下面這個範例會自動刪除五天前的 gz 備份檔。
40 1 * * * userxx /usr/bin/rm
date --date="-5 day" +"\%Y-\%m-\%d"
*.gz
6. 其他
-
啟用 Crontab :
- sudo service cron start
-
查詢 Crontab 是否有查詢:
- grep CRON /var/log/syslog
- tail -f /var/log/syslog | grep CRON
-
檢查已開啟的服務:
- /etc/init.d