Crontab做業時間設置

今天,遇到這麼一個題目,週一到週五的9:00-16:59之間,每隔兩分鐘將某個命令運行一次。給的答案是:shell

*/2   9-16   *   *   1-5 /usr/sbin/somecommand dosomething

乍一看,這個答案不對,應該是9-17纔對。結果對面一位哥們兒說,就是這樣的。這幾個參數是一對一匹配,互不相干。9-16只管將小時數鎖定在這個範圍內;分鐘的設置*/2,只管0、二、四、六、八、10……5六、58這30個時刻。若是設爲17,即17點,那麼17:0二、17:0四、17:06……的時候,somecommand命令就會照樣運行,就突破了題目中的16:59的限制,就不對了。bash

若是這哥們兒是對的,那麼,好比說,將crontab做業時間嚴格限制在凌晨3-6之間的話,必須少寫一個小時纔對?即寫成3-5。這怎麼可能?因而,咱們作實驗,以下:測試

*/2   14-15    *    *    *   echo "date >> ~/testjob"

即在14-15點之間,每兩分鐘在主目錄的testjob文件裏面打印出那一刻的日期時間。測試的時候差很少是下午三點。過了一下子,結果出來了。15:00、15:0二、15:04繼續出結果!code

因而,天天3-6點鐘,每隔10分鐘執行一項命令的crontab,應該這麼寫:crontab

*/10    3-5    *   *   *  /do something

另外咱們知道,在shell裏面,echo reboot或者echo "reboot",只會在屏幕上顯示出「reboot」字樣。若是這樣呢?class

echo reboot |at now +1min

1分鐘後,系統就自動重啓了。還有:test

echo "date >> ~/test" |at now +1min
echo $(date)>> ~/test |at now +1min

//以上兩條的結果是同樣的
相關文章
相關標籤/搜索