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

 

Gimmy
作者: Gimmy
積極的人在每一次憂患中都看到一個機會 而消極的人則在每個機會都看到某種憂患

發表迴響