循環執行的工作排程

  1. crontab 的使用限制如下:
    1. 先在 /etc/cron.allow 檔案中尋找可以使用 crontab 指令的使用者。
    2. 若無 /etc/cron.allow 檔案,則尋找 /etc/cron.deny 檔案不能使用 crontab 指令的使用者。
    3. 若上述兩檔案皆不存在,則只有 root 可以使用 crontab 指令。
    4. 預設只有空白的/etc/cron.deny檔,即所有人皆可使用crontab指令。
      [root@kvm7 ~]# ll /etc/cron [TAB][TAB]
      cron.d/       cron.deny     cron.monthly/ cron.weekly/  
      cron.daily/   cron.hourly/  crontab       
      [root@kvm7 ~]# cat /etc/cron.deny
      

  2. crontab:循環執行的工作排程。
    [test @test test]# crontab [-u user] [-l | -e | -r] 
    參數說明: 
    -u user :只有 root 能下達的參數,視察或編譯其他使用者的 crontab 內容 
    -l      :列出 crontab 的內容 
    -e      :編輯 crontab 的內容 
    -r      :刪除 crontab 的內容
    
  3. 編輯排程
    [root@dywOffice dywang]# crontab -e
    # min(0-59)  hours(0-23) day(1-31) month(1-12) dow(0-6)   command
    0 0 * * 6 /backup/sysbackup
    
    1. 五個時間數字參數分別代表:
      數字代表的意義 分鐘 小時 日期 月份
      範圍 0-59 0-23 1-31 1-12 0-6 (0或7為星期天)
    2. 輔助字符:
      特殊字符 代表意義
      * 代表任何時刻都接受。
      , 代表分隔時段。
        例如:在 0300 及 0600 時工作,則 0 3,6 * * * command
      - 代表一段時間範圍內。
        例如:在 0800 到 1200 之間每小時的 20 分都進行工作,
        20 8-12 * * * command
      /n 每隔 n 單位間隔。
        例如每 5 分鐘進行一次,則 */5 * * * * command

  4. 查看排程
    [root@dywOffice dywang]# crontab -l
    # min(0-59)  hours(0-23) day(1-31) month(1-12) dow(0-6)   command
    0 0 * * 6 /backup/sysbackup
    
  5. 刪除排除
    [root@dywOffice dywang]# crontab -r
    [root@dywOffice dywang]# crontab -l
    no crontab for root
    
  6. 例題:如果您 (帳號 deyu2) 要建立一個自動執行的工作,在每天 17:00 執行 /bin/echo "closing time",該如何做?
    1. 若指定用戶 deyu2 編輯工作排程,可以先切換到 deyu2,再執行 crontab -e 進行編輯,完成編輯後退出回到 root 身份。
      [root@kvm7 ~]# su - deyu2
      [deyu2@kvm7 ~]$ crontab -e
      no crontab for deyu2 - using an empty one
      crontab: no changes made to crontab
      [deyu2@kvm7 ~]$ exit
      logout
      
    2. 建議直接以 root 身份執行 crontab -e 加上 -u deyu2 參數指定編輯用戶 deyu2 的工作排程,就可以不用切換身份。
      [root@kvm7 ~]# crontab -e -u deyu2
      no crontab for deyu2 - using an empty one
      crontab: installing new crontab
      
    3. 編輯完用戶 deyu2 的工作排程後,以 -l 選項查看排程內容是否正確。
      [root@kvm7 ~]# crontab -l -u deyu2
      0 17 * * * /bin/echo "closing time"