今天,遇到這麼一個題目,週一到週五的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 //以上兩條的結果是同樣的