運維——作業管理(計劃任務)
任務計劃就好比我們的鬧鐘一樣,到了指定的時間就該去做對應的事情。
任務計劃分為兩類:
一次性的任務計劃:只執行一次就結束
週期性的任務計劃:每隔一定的週期去做相同的事情
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
第二行表示:一天之內沒有被執行的任務將在開機五分鐘後執行
下面兩行想必你也明白了吧