Linux 定時任務排程

這行程式碼沒Bug發表於2021-08-17

定時任務排程

任務排程:是指系統在某個時間執行的特定的命令或程式

任務排程分類

  • 系統工作:有些重要的工作必須周而復始的執行
  • 個別使用者工作:個別使用者可能希望執行某些程式

crontab 進行任務的設定

基本語法

crontab [選項]

常用選項

-e:編輯 crontab定時任務

-l:查詢crontab任務

-r:刪除當前使用者所有的crontab任務

快速入門

設定任務排程檔案:/etc/crontab

設定個人任務排程:crontab -e

接著輸入任務到排程檔案

*/1**** ls -l /etc/ > /tmp/to.txt

每小時的每分鐘執行ls -l /etc/ > /tmp/to.txt命令

細節說明
  • 5個點位符的說明

    • 第一個 "*":一小時當中的第幾分鐘 【0-59】
    • 第二個 "*":一天當中的第幾小時 【0-23】
    • 第三個 "*":一個月當中的第幾天 【1-31】
    • 第四個 "*":一年當中的第幾月 【1-12】
    • 第五個 "*":一週當中的周幾 【0-7】( 0 和 7 都代表週日)
  • 特殊符號說明

    • *:表示任何時間。如第一個"*",就代表一小時中每分鐘都執行一次
    • ,:表示不連續的時間。如“ 0 8,12 * * * ”,就代表每天的8點0分,12點0分執行一次
    • -:表示連續的時間範圍。如“ 0 5 * * 1-6 ”,代表週一到週六凌晨5點0分執行
    • */n:表示每隔多久執行一次。比如“ */1 * * * * ”,代表每隔1分鐘執行一次

crond 相關指令

終止任務排程

crontab -r

列出當前有那些任務排程

crontab -l

重啟任務排程

service crond restart

at 定時任務

基本介紹

  1. at命令是一次性定時計劃任務,at的守護程式atd會以後臺模式執行,檢查作業佇列來執行
  2. 預設情況下,atd守護程式每 60 秒檢查作業佇列,有作業時,會檢查作業執行時間,如時間與當前時間匹配,則執行此作業
  3. at命令是一次性定時計劃任務,執行完一個任務後不再執行此任務
  4. 在使用at命令時,一定要保證atd程式的啟動 可以使用相關指令來檢視:ps -ef | grep atd

基本語法

at [選項] [時間]

Ctrl + D 結束at命令的輸入,兩次

常用選項

-m:當指定的任務被完成後,將給使用者傳送郵件,即使沒有標準輸出

-Iatd的別名

-datrm的別名

-v:顯示任務將被執行的時間

-c:列印任務的內容到標準輸出

-V:顯示版本資訊

-q<佇列>:使用指定的佇列

-f<檔案>:從指定檔案讀入任務而不是從標準輸入讀入

-t<時間引數>:以時間引數的形式提交要執行的任務

at 指定時間

  1. 接受在當天的 hh:mm(小時:分鐘)式的時間指定。假如該時間已過去,那麼就放在第二天執行。 例如:04:00
  2. 使用 midnight(深夜),noon(中午),teatime(飲茶時間,一般是下午 4 點)等比較模糊的詞語來指定時間。
  3. 採用 12 小時計時制,即在時間後面加上 AM(上午)或 PM(下午)來說明是上午還是下午。 例如:12pm
  4. 指定命令執行的具體日期,指定格式為 month day(月 日)或 mm/dd/yy(月/日/年)或 dd.mm.yy(日.月.年),指定的日期必須跟在指定時間的後面。 例如:04:00 2021-03-1
  5. 使用相對計時法。指定格式為:now + count time-units ,now 就是當前時間,time-units 是時間單位,這裡能夠是 minutes(分鐘)、hours(小時)、days(天)、weeks(星期)。count 是時間的數量,幾天,幾小時。 例如:now + 5 minutes
  6. 直接使用 today(今天)、tomorrow(明天)來指定完成命令的時間。

案例:2天后的下等5點執行 /bin/ls/home

$ at 5pm + 2 days
at> /bin/ls/home

相關文章