未來的某時間點(diǎn)執(zhí)行一次某任務(wù):at,batch
周期性運(yùn)行某任務(wù):crontab
執(zhí)行結(jié)果:通過本地郵件服務(wù)發(fā)送給用戶
mailx [ -s 'sbuject 標(biāo)題'] username
進(jìn)入開始寫郵件
使用.號結(jié)束,單獨(dú)成行ctrl+d 提交也可以
mail 命令收郵件
跟上郵件編號讀取郵件
q 退出
非交互式輸入郵件正文
mailx -s "標(biāo)題" 用戶 < 要輸入的內(nèi)容
使用管道 cat /xxx/xxx | mail -s “標(biāo)題” 用戶
at:命令
默認(rèn)使用郵件發(fā)送結(jié)果
ctrl+d 提交
at [option]... TIME
time :
HH:MM [YYYY-mm-dd]
noon,midnight,teatime,正午,午夜,下午茶
tomorrow
now + 數(shù)字 + 單位 minutes,hours,days。。。
-l 列出當(dāng)前正在等待執(zhí)行的任務(wù)
-f 從指定文件讀取任務(wù),不在使用交互輸入,可以執(zhí)行腳本,需要全路徑
-d 刪除沒有執(zhí)行的任務(wù),相當(dāng)于atrm 數(shù)字
-c 查看要執(zhí)行的任務(wù)具體內(nèi)容
-q 指明任務(wù)隊(duì)列
at 隊(duì)列由單個字母表示,默認(rèn)為a隊(duì)列
batch命令:
batch會自動在系統(tǒng)空閑時間執(zhí)行指定任務(wù)。
周期性任務(wù)計(jì)劃:cron
服務(wù)程序:不斷檢查那些任務(wù)該執(zhí)行。
確保crond守護(hù)進(jìn)程處于運(yùn)行狀態(tài)
systemctl status crond.service
提交任務(wù)的方式:
提交固定格式的文件,不建議直接編輯此文件,使用crontab命令
cron任務(wù)分為兩類:
系統(tǒng)cron任務(wù), 主要實(shí)現(xiàn)系統(tǒng)自身的維護(hù),修改需要手動編輯/etc/crontab文件
用戶cron任務(wù), 用戶自定義的任務(wù),使用crontab命令
系統(tǒng)任務(wù):
每一行定義一個周期任務(wù),查看/etc/crontab查看格式。
時間 - 運(yùn)行任務(wù)的用戶身份 - 要執(zhí)行的任務(wù) 使用空格分割
此處的環(huán)境變量不同于用戶登錄后的環(huán)境變量,建議命令使用絕對路徑,或自定義PATH;
執(zhí)行結(jié)果郵件發(fā)送 MAILTO指定的用戶。
用戶任務(wù):
/var/spool/cron/username
用戶 cron 配置格式
時間 - 要執(zhí)行的任務(wù)
郵件發(fā)送至當(dāng)前用戶
時間表示法:
- 特定值:給定時間點(diǎn)有效取值方位內(nèi)的值
注意:day of week 和 day of month 一般不同時使用。不取值使用 * 號占位 - 給定時間點(diǎn)取值的所有值,表示每 。。。。
- 每個指定時間使用逗號分隔多個值
- 連續(xù)取值使用 - 連接開始和結(jié)束
- */ # 自定義步長,指定的時間點(diǎn)不能被步長整除時,其意義將不存在。
最小時間單位為分鐘,想完成秒級任務(wù),需要借助其它機(jī)制實(shí)現(xiàn)。
定義任務(wù),crontab 用法
crontab -e 編輯任務(wù);
crontab -l 列出所有任務(wù);
crontab -r 移除所有任務(wù);刪除var/spool/cron/username文件
crontab -i 在移除所有任務(wù)時,提示用戶確認(rèn)。
crontab -u root用戶可為指定用戶編輯用戶。
結(jié)果會通過郵件發(fā)送當(dāng)前用戶,如果拒收郵件:
- COMMADND > dev/null
- COMMADND &> dev/null
定義COMMAND時用到%需要對其轉(zhuǎn)義 放置在單引號中的不需要轉(zhuǎn)義
如因故未能執(zhí)行,下次開機(jī)后都要執(zhí)行一次,使用anacron實(shí)現(xiàn)。