Linux未來任務的調度——at,batch,crontab命令
前提:
需要一個準確的時間
可以支持任務調度的應用程序
**註意**:
在計劃任務中,所有執行的命令的輸出結果,這類及結果均以郵件的方式發送至指定的用戶郵箱中;
郵箱的發送:
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
裏邊就會有剛才寫的腳本;
查看郵件內容
顯示日期;
Linux未來任務的調度——at,batch,crontab命令