計劃任務分為兩種at和corn
at僅執行一次的任務
corn循環執行的任務
at計劃任務-單次任務
啟動atq服務 systemctl start atq
運作方式:
at指令會将任務以文本的形式寫入/var/spool/at/目錄下,然後此任務會等待atq服務執行。
權限:
系統利用/etc/at.allow與/etc/at.deny這兩個檔案施加限制
1.若存在allow,存在于at.allow的使用者才可以使用at。
2.若allow不存在,不在deny檔案的使用者才可以使用.
3.若兩個檔案都不存在,隻有root使用者可以使用at.
一般隻使用deny檔案,把需要拒絕的使用者寫入。一個賬号寫一行。
文法:
at [-mldvc] TIME
-m發送郵件,-l列出所有計劃(atq),-d删除指定計劃,-v指定時間格式 -c直接跟任務指令
TIME格式有
指定時間HH:MM (04:00)
指定某天某時刻 HH:MM YYYY-MM-DD(04:00 2021-04-01)
使用加号now + number[minutes|hours|days|weeks] (now + 5 minutes)
輸入指令後按ctrl+d結束計劃任務的輸入。
batch空閑時執行任務當平均負載(一段時間内cpu執行的任務數)小于0.8時執行,其使用方法與at類似無須設定執行時間
CRON計劃任務-循環任務
運作方式:
crontab指令是區分使用者的,它會将任務以文本的形式寫入/var/spool/cron/使用者 檔案下,然後此任務會等待cron服務執行。cron每一項任務都會寫入/var/log/vcron日志檔案中
權限:
系統利用/etc/cron.allow/etc/cron.deny這兩個檔案施加限制,規則與at類似
一般隻使用deny檔案,把需要拒絕的使用者寫入。一個賬号寫一行。
文法:
crontab [-u username] [-l|-e|-r]
-u 隻有root使用者可以使用,建立指定使用者的循環任務
-l檢視任務,-e編輯任務 -r删除所有任務
crontab進入編輯vim模式,輸入一項任務,如下圖所示:
五個日期分别表示是如下:
分鐘 小時 日期 月份 周 指令
*表示任何時刻都接受
,逗号表示分時段執行,例如0 3,5 * * * 每天3點 和5點執行
-減号範圍
/n每間隔時間 例如 */5 * * * * cmd,每間隔5分鐘執行。
配置檔案 /etc/crontab、/etc/cron.d/*
指令行是為使用者cron設計的,對于例行性的任務隻需編輯/etc/crontab檔案即可,或者将寫好的檔案放到/etc/cron.d/目錄下,
檢視/etc/crontab檔案
MAILTO出現錯誤時發送的郵件賬号,其他配置項與指令行一緻
crond服務讀取配置檔案位置
/etc/crontab
/etc/cron.d/*
/var/spool/cron/*
檢視/etc/cron.d/*目錄
每個整點執行一下/etc/cron.hourly/目錄下的檔案,該腳本下直接寫指令即可,不用配置時間資訊,同樣有cron.daily .weekly、.monthly
1,11,21,31,41,51 * * * * echo "哈哈" 每到*1執行輸出
anacron可喚醒任務計劃
文法
anacron [-sfn] [job]
anacron - u [job]
-s連續執行根據時間戳 -f強制執行 ,不判斷時間戳 -n立即執行,不延遲
-u隻更新時間戳,不執行
[job] /etc/anacrontab任務名稱
以cron.daily為例說明:
【1】cron.daily任務,1代表每隔一天執行一次,5代表延遲5分鐘
【2】anacron服務,從/var/spool/anacron讀出cron.daily任務上次執行時間戳,
【3】判斷目前時間與上次時間戳的是否大于1天,大于1天則延時3小時+5分鐘,3是由/etc/anacrontab的START_HOURS_RANGE配置
【4】延時過後,執行指令。