任務計劃就好比我們的鬧鐘一樣,到了指定的時間就該去做對應的事情。
任務計劃分為兩類:
一次性的任務計劃:只執行一次就結束
周期性的任務計劃:每隔一定的周期去做相同的事情
at命令就是專門用來處理一次性的計劃任務
batch也是處理一次性的計劃任務但是它是由系統自行選擇空閑時間去執行此處指定的任務(不常用)
crontab可以根據定義的周期信息,循環的去做一些事情
在使用此命令之前都要先安裝相應的包,at和cronie,安裝之后要啟用相應的服務
at:
centos6:使用service atd start 啟動
centos7:使用systemctl ?start atd啟動
crontab:
centos6:使用service crond start啟動
centos7:使用systemctl restart crond.service啟動
了解任務計劃的相關信息之后我們來看下這些命令的具體使用:
at命令:
格式:at [option] TIME
常用選項:
-V 顯示版本信息:
-l: 列出指定隊列中等待運行的作業;相當于atq(查詢)
-d: 刪除指定的作業;相當于atrm(刪除)
-c: 查看具體作業任務
-f /path/from/somefile:從指定的文件中讀取任務
-m:當任務被完成之后,將給用戶發送郵件,即使沒有標準輸出
TIME:定義出什么時候進行 at 這項任務的時間
HH:MM [YYYY-mm-dd]
noon, midnight, teatime(4pm)
tomorrow
now+#{minutes,hours,days, OR weeks}
執行at命令時會有多行輸入,當輸入完命令之后按Ctrl+d 提交退出
注意:作業執行命令的結果中的標準輸出和錯誤以郵件通知給相關用戶
如果是寫在腳本中,最好是重定向至/dev/null
如果想取消任務計劃,可先使用at -l 查看任務計劃
然后使用at -d job_num取消
at計劃任務默認保存在/var/spool/at中即使重啟也能生效
如果不想讓某些用戶去創建任務,系統還給我們提供了相應的配置文件 黑名單和白名單
我們只需把用戶名寫入相應的名單中就給了他們不同的權限
白名單:/etc/at.allow
黑名單配置文件:/etc/at.deny
我們可以簡單的理解為一個用戶到底有沒有創建任務的權限只需先看白名單,白名單里面有那就可以創建
也可以簡單的說白名單優先級高于黑名單(個人理解如果有誤請指出)
另外如果一個用戶創建任務之后被放入了黑名單,那么任務是還會執行
接下來我們再來說說crontab
cron周期任務分為系統任務和普通用戶任務,當然名字不同配置文件也不同
系統cron任務的配置文件:/etc/crontab
我們只需在此配置文件中按照格式寫入即可
簡單的把格式表示一下(每相鄰兩個之間用空格隔開)
分鐘 ? ? 小時 ? ? ?日期 ? ?月份 ? ?周幾 ? ? 用戶名 ? ? 命令
星號(*)表示 每……
離散取值
#,#,#
連續取值
#-#
普通用戶計劃任務
配置文件?/var/spool/cron/USERNAME
crontab 命令
格式 ??crontab [-u user] [-l | -r | -e] [-i]
-l: 列出所有任務
-e: 編輯任務
-r: 移除所有任務
-i:同-r一同使用,以交互式模式移除指定任務
-u user: 僅root可運行,指定用戶管理cron任務
普通用戶可以使用crontab -e創建計劃任務但不能修改,如果要修改則還要執行crontab -e file
當然我們也可以設置黑名單和白名單配置文件是/etc/cron.{allow,deny}
此處我們不再贅述和上面一樣
注意:運行結果的標準輸出和錯誤以郵件通知給相關用戶
工作中如果有時候馬上就到任務執行的時候了卻因為其他一些因素導致關機,出現故障等這時原定的計劃任務沒有執行怎么辦?別擔心系統中還有anacron系統來解決此類問題
我們打開/etc/anacrontab來看下(截取的只是最下面與我們相關的)
#period in days delay in minutes job-identifier command
1 ? ? 5 ? ? ? cron.daily ? ? ? ? ?nice run-parts ? ? ?/etc/cron.daily
7 ? ? 25 ? ? cron.weekly ? ? nice run-parts ? ? ?/etc/cron.weekly
@monthly 45 ? ?cron.monthly ? nice run-parts ? ? /etc/cron.monthly
第二行表示:一天之內沒有被執行的任務將在開機五分鐘后執行
下面兩行想必你也明白了吧
以上是個人的理解,如果有錯誤請及時指出,謝謝!
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/97578