close
在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
 
※ 星期參數為 代表星期日
 
 
 
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
 
 
arrow
arrow
    文章標籤
    ubuntu crontab 排程
    全站熱搜

    Gimmy 發表在 痞客邦 留言(0) 人氣()