所謂計劃任務就是指某一個時間系統自動做一件事情如輸入指令或者保存文件等等
計劃任務分兩種:一次性計劃任務命令(at)和周期性計劃任務命令(crontab)
at的用法:如果當前時間為2017年6月6日
at 18:00 2017-06-6
w > /root/who.txt
init 0
(輸入ctrl+d結束編輯)
此時將意味著我們的系統將在第二天的傍晚6點執行兩個命令,一個是將當時系統訪問的客戶列表做一個另存為,另一個是關機。
這個命令將是一次性執行。
這個任務會生成一個可執行文件到/var/spool/at/這個目錄中可以通過cat查看其中文件內容
atq或者at -l:這兩個命令是將制定的計劃列出清單會工作的id和執行時間
atrm [id]或者at -d [id]:這兩個命令是將指定的任務刪除,具體刪哪個任務是由任務的id決定的。
at -c [id] :這個命令是通過工作id來查看計劃中的內容的等同于直接查看/var/spool/at/目錄中的可執行文件。
(注:查看#at -l; 刪除#at -d [id]; 查看計劃內容#at -c [id])
at這個功能本身是一項開機及執行的服務,利用chkconfig --list atd可以看到atd這個服務是在全字符模式和圖形模式默認開啟的
。如果這個服務被關閉了我們也可以通過兩種方式來開啟它。
第一種 /etc/init.d/atd {start|stop|restar|stadues|…}
第二種 service atd {start|stop|restar|stadues|…}
at有黑白名單分別為
/etc/at.deny黑名單此名單中的用戶不可以使用at命令centos默認有這個文件。
/etc/at.allow白名單這個文件默認沒有可以自己創建,這個文件意味著只有白名單的用戶可以使用at功能其他人都不可以。
如果兩個文件中都有同一個用戶那么allow優先。
有的操作系統可能沒有安裝at功能我們可以通過rpm -q at 來查看at工具有沒有安裝如果沒有下載一個裝上即可centos系統自帶。
說到at也可以順帶提一個命令batch。
batch的用法和at基本相同而且batch可以不指定時間,或者即使指定了時間到時也未必會執行計劃的操作。
因為batch會考慮系統的負載狀況當負載狀況低于0.8才會執行其中的操作。
下面來介紹周期性計劃cron
所謂周期性就是設定等任務計劃會根據你指定的時間條件進行周期性的執行。這樣就不用像at一樣一條一條制定了。
用法具體如下:
crontab -e -u (user)這是對用戶進行任務編輯;如果直接輸入crontab -e 則是對當前用戶建立計劃
進入計劃編輯界面后就可以編輯計劃了計劃是已行分開的每一行是一個計劃。格式如下:
分 (0~59) 時(0~23)日期 (1~31)月(1~12)星期(0~7)命令 如果用*則表示通配其中星期0和7都代表星期天。
如果我們想在每年的2月和12月的1號和28號的晚上八點到12點每半個小時向系統所在的所有用戶廣播see your back
編輯為 /30 20-0 1,28 2,12 wall “see your back”
注意:由于每年的星期幾和日期搭配是會變化的,所以星期幾和日期時間不要同時寫,以免系統會真的等到若干年后兩個時間重合再運行你指定的命令。
如果我們是root用戶時也可以通過vim在家目錄編輯一個內容為周期運行的指令文件,這樣我們通過命令 crontab -u student /root/文件名 來為student用戶設置計劃。
計劃編輯好后查詢命令為 crontab -l -u (user)同時也可以到/var/spool/cron/這個目錄中,通過cat查看其中文件內容
刪除命令 crontab -r -u (user) 這種刪除方式會將用戶的所有計劃全盤刪除因此不建議使用,還是應該進入編輯模式來有目的的刪除。
這個周期性計劃服務也是默認開啟的開關的方法也是兩種
第一種 /etc/init.d/crond {start|stop|restar|stadues|…}
第二種 service crond {start|stop|restar|stadues|…}
cron有黑白名單分別為
/etc/cron.deny黑名單此名單中的用戶不可以使用crontab命令centos默認有這個文件。
/etc/cron.allow白名單這個文件默認沒有可以自己創建,這個文件意味著只有白名單的用戶可以使用crontab其他人都不可以。
cron功能是否安裝可以通過rpm -q vixie-cron來確認。
原創文章,作者:huchaowei,如若轉載,請注明出處:http://www.www58058.com/77709