linux 任務(wù)計(jì)劃、周期性任務(wù)

未來(lái)的某時(shí)間點(diǎn)執(zhí)行一次某任務(wù):at,batch
周期性運(yùn)行某任務(wù):crontab
執(zhí)行結(jié)果:通過(guò)本地郵件服務(wù)發(fā)送給用戶(hù)

mailx [ -s 'sbuject 標(biāo)題'] username
進(jìn)入開(kāi)始寫(xiě)郵件
使用.號(hào)結(jié)束,單獨(dú)成行ctrl+d 提交也可以

mail 命令收郵件
跟上郵件編號(hào)讀取郵件
q 退出

非交互式輸入郵件正文
mailx -s "標(biāo)題" 用戶(hù) < 要輸入的內(nèi)容
使用管道 cat /xxx/xxx | mail -s “標(biāo)題” 用戶(hù)

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 刪除沒(méi)有執(zhí)行的任務(wù),相當(dāng)于atrm 數(shù)字
-c 查看要執(zhí)行的任務(wù)具體內(nèi)容
-q 指明任務(wù)隊(duì)列
at 隊(duì)列由單個(gè)字母表示,默認(rèn)為a隊(duì)列

batch命令:
batch會(huì)自動(dòng)在系統(tǒng)空閑時(shí)間執(zhí)行指定任務(wù)。

周期性任務(wù)計(jì)劃:cron
服務(wù)程序:不斷檢查那些任務(wù)該執(zhí)行。

確保crond守護(hù)進(jìn)程處于運(yùn)行狀態(tài)
systemctl status crond.service

提交任務(wù)的方式:
提交固定格式的文件,不建議直接編輯此文件,使用crontab命令

cron任務(wù)分為兩類(lèi):
系統(tǒng)cron任務(wù), 主要實(shí)現(xiàn)系統(tǒng)自身的維護(hù),修改需要手動(dòng)編輯/etc/crontab文件
用戶(hù)cron任務(wù), 用戶(hù)自定義的任務(wù),使用crontab命令

系統(tǒng)任務(wù):
每一行定義一個(gè)周期任務(wù),查看/etc/crontab查看格式。
時(shí)間 - 運(yùn)行任務(wù)的用戶(hù)身份 - 要執(zhí)行的任務(wù) 使用空格分割
此處的環(huán)境變量不同于用戶(hù)登錄后的環(huán)境變量,建議命令使用絕對(duì)路徑,或自定義PATH;
執(zhí)行結(jié)果郵件發(fā)送 MAILTO指定的用戶(hù)。

用戶(hù)任務(wù):
/var/spool/cron/username
用戶(hù) cron 配置格式
時(shí)間 - 要執(zhí)行的任務(wù)
郵件發(fā)送至當(dāng)前用戶(hù)

時(shí)間表示法:

  1. 特定值:給定時(shí)間點(diǎn)有效取值方位內(nèi)的值
    注意:day of week 和 day of month 一般不同時(shí)使用。不取值使用 * 號(hào)占位
    • 給定時(shí)間點(diǎn)取值的所有值,表示每 。。。。
  2. 每個(gè)指定時(shí)間使用逗號(hào)分隔多個(gè)值
  3. 連續(xù)取值使用 - 連接開(kāi)始和結(jié)束
  4. */ # 自定義步長(zhǎng),指定的時(shí)間點(diǎn)不能被步長(zhǎng)整除時(shí),其意義將不存在。

最小時(shí)間單位為分鐘,想完成秒級(jí)任務(wù),需要借助其它機(jī)制實(shí)現(xiàn)。

定義任務(wù),crontab 用法
crontab -e 編輯任務(wù);
crontab -l 列出所有任務(wù);
crontab -r 移除所有任務(wù);刪除var/spool/cron/username文件
crontab -i 在移除所有任務(wù)時(shí),提示用戶(hù)確認(rèn)。
crontab -u root用戶(hù)可為指定用戶(hù)編輯用戶(hù)。

結(jié)果會(huì)通過(guò)郵件發(fā)送當(dāng)前用戶(hù),如果拒收郵件:

  1. COMMADND > dev/null
  2. COMMADND &> dev/null

定義COMMAND時(shí)用到%需要對(duì)其轉(zhuǎn)義 放置在單引號(hào)中的不需要轉(zhuǎn)義

如因故未能執(zhí)行,下次開(kāi)機(jī)后都要執(zhí)行一次,使用anacron實(shí)現(xiàn)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容