天天看點

Linux學習六(計劃任務)----鳥哥私房菜

計劃任務分為兩種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)

Linux學習六(計劃任務)----鳥哥私房菜

 輸入指令後按ctrl+d結束計劃任務的輸入。

batch空閑時執行任務當平均負載(一段時間内cpu執行的任務數)小于0.8時執行,其使用方法與at類似無須設定執行時間

Linux學習六(計劃任務)----鳥哥私房菜

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模式,輸入一項任務,如下圖所示:

Linux學習六(計劃任務)----鳥哥私房菜

 五個日期分别表示是如下:

分鐘 小時 日期 月份 周 指令

*表示任何時刻都接受

,逗号表示分時段執行,例如0 3,5   * * *  每天3點 和5點執行

-減号範圍

/n每間隔時間 例如 */5 * * * * cmd,每間隔5分鐘執行。

Linux學習六(計劃任務)----鳥哥私房菜

配置檔案 /etc/crontab、/etc/cron.d/*

指令行是為使用者cron設計的,對于例行性的任務隻需編輯/etc/crontab檔案即可,或者将寫好的檔案放到/etc/cron.d/目錄下,

檢視/etc/crontab檔案

Linux學習六(計劃任務)----鳥哥私房菜

MAILTO出現錯誤時發送的郵件賬号,其他配置項與指令行一緻

 crond服務讀取配置檔案位置

/etc/crontab

/etc/cron.d/*

/var/spool/cron/*

檢視/etc/cron.d/*目錄

Linux學習六(計劃任務)----鳥哥私房菜

每個整點執行一下/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任務名稱

Linux學習六(計劃任務)----鳥哥私房菜

 以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】延時過後,執行指令。

繼續閱讀