1. 程式人生 > >Linux未來任務的調度——at,batch,crontab命令

Linux未來任務的調度——at,batch,crontab命令

at crontab

### 在linux中,我們可以實現對於任務的未來調度,從而可以借助於linux實現半自動化運維操作方式,簡而言之就是可以在未來的某個時間點,系統可以自動運行我們部署的任務

前提:

需要一個準確的時間

可以支持任務調度的應用程序

**註意**:

在計劃任務中,所有執行的命令的輸出結果,這類及結果均以郵件的方式發送至指定的用戶郵箱中;

郵箱的發送:

mail命令

mail [-s SUBJECT] USERNAME[@DOMAINNAME]

(Ctrd + d發送)

系統用戶的郵箱的目錄/var/spool/mail/

at命令的常用用法:

at, batch, atq, atrm - queue, examine or delete jobs for later execution

at [option] timespec


timespec:

1.HH:MM [YYYY-mm-dd]

2.noon,midnight,teatime

3.tomorrow

4.now+#UNIT

UNIT:minutes,hours,days,or weeks


at定義的計劃任務都在某個特定的任務隊列中;默認at只啟用了一個at隊列,通常用a表示;

技術分享圖片

at命令的常用用法:

at [-q QUEUE_NAME] time

定義計劃任務,輸入任務之後,Ctrl+d提交

atq或at -l

查看所有任務隊列中尚未執行計劃任務列表;

atrm JOB_ID或at -d JOB_ID

撤銷任務隊列中尚未執行的指定任務標識符的計劃任務

at -f /PATH/TO/SOMEFILE time

從文件中讀取命令操作而不是標準輸入中讀取

at -c JOB_ID

查看指定的計劃任務的具體內容;


比如:

在2019年新年跨年時給liujingyu發一封電子郵件,祝他新年快樂。

技術分享圖片

用at -c 5 命令查看以後,只有最後兩行是我們預先寫的語句;

技術分享圖片




batch命令:

與at命令類似的,默認的隊列是b,都是一次性執行的定義的計劃任務;

區別是:

batch命令定義計劃任務時,無需指定執行時間,系統會自動選擇比較空閑的時間來完成此任務;



crond任務的調度進程;能夠識別和周期性的執行crontab命令定制的計劃任務;


crond定義的計劃任務分為兩類:

系統任務:

全局性任務:通常使用/etc/crontab文件定義;

技術分享圖片

其不難看出通用格式:

* * * * * user-name command to be executed

分鐘 小時 天 月 星期

註意:

* * * * *:定義周期性執行計劃任務的具體時間;

user-name:執行此任務的用戶;

command to be executed:此次計劃任務的執行主體,建議使用絕對路徑;


用戶任務:

個體性任務通常存放在/var/spool/cron/目錄下的與用戶名對於的文件中

此類文件格式:

* * * * * command to be execute


時間表示法:

1.某個特定時間:給定的時間點的有效取值範圍內的所有有效值;

0 3 4 9 * (9月4日3點整執行腳本)

2.通配符時間:"*",表示"每..."的意思;

3.離散的時間點:

0 8,20 * * 1,2,4,5 (周1、2、4、5的8點和20點整執行腳本)

4.連續的時間段

0-10 8-12 * * *

5.步進時間:

*/3 * * * * 每三分鐘執行一次


*/9 * * * *:無法真正實現每9分鐘執行一次;因此默認情況下,步進長度應該是能夠被60整除的數字;


註意:最小的時間單位是分鐘,如果計劃使用不足一分鐘的若幹秒為執行周期,則必須借助於其他的機制,如:編寫shell腳本;


crontab命令:

crontab [-u user] file

crontab [-u user] [-l | -r | -e] [-i] [-s]

-u user:超級用戶為自己或其他用戶設置或編輯周期性任務時使用的選項;

-l:查看所有的已經被定義好的計劃任務列表;

-e:使用vi編輯器編輯臨時的crontab文件;

-r:移除所有的計劃任務;建議謹慎使用;

-i:在使用-r選項時,能夠進行交互式刪除;


crontab -e

* * * * * root /usr/bin/date


ls /var/spool/cron/root

裏邊就會有剛才寫的腳本;


mail

查看郵件內容

顯示日期;


Linux未來任務的調度——at,batch,crontab命令