Linux任務計畫,週期性任務執行

2021-08-19 19:31:05 字數 3998 閱讀 6479

概述:什麼是計畫任務呢?就像我們每個人日常生活中都會使用到的鬧鐘一樣,按時的去提醒該幹什麼事,以免忘記。同樣,我們在工作中也要每天在特定的時間內安排一些事情,這就是計畫任務。

未來的某時間點執行以此任務:at,batch

週期性執行某任務:cron

####at命令

用法:at [option] time

time:

hh:mm [yyyy-mm-dd]

noon, midnight, teatime

tomorrow

now+#

示例:(1)hh:mm 如 02:00

在今天的02:00進行,若該時刻已過,則明天此時執行任務

(2)hh:mm yyyy——mm——dd 如:04:00 2016-09-20

規定在某年某月的某一天的特殊時可進行該項任務

(3)hh:mm[am|pm] [month] [date]

04pm march 17 17:20 tomorrow

(4)hh:mm[am|pm]+number[minutes|hours|days|weeks]

在某個時間點再加及各時間後才執行該項任務

now+5minutes 03pm+3days

常用選項:

-q queue:指明佇列;

-l:列出指定佇列中等待執行的作業;相當於atq

-d:刪除指定的作業;相當於atrm

-c:檢視具體作業任務

-f /path/from/somefile:從指定的檔案中讀取任務;

-m :強制at傳送郵件,表示執行完畢;

####batch命令

讓系統自行選擇空閒時間去執行此處指定的任務;

####週期性任務計畫:cron

向crond提交作業的方式不同於at,它需要使用專門的配置檔案,此檔案有固定格式,不建議使用文字編輯器直接編輯此檔案,要使用crontab命令,可以檢查語法是否有錯誤。

#####相關的程式包

cronie:主程式包,提供了crond守護程序及相關輔助工具;

cronie-anacron:cronie的補充程式,用於監控cronie任務執行狀況;如cronie

中任務在過去該執行的時間點未能正常執行,則anacron會隨後啟動一次此任務;

crontabs:包含centos提供系統維護任務;

確保crond守護處於執行狀態:

centos 7: systemctl status crond

centos 6: service crond status

#####計畫要週期性執行的任務提交給crond,由其來實現到點執行。

可用crontab -e命令來編輯,編輯的是/var/spool/cron下對應使用者的cron檔案,也可以直接修改/etc/crontab檔案

使用者cron任務:crontab命令

系統cron任務

[root@server1 yum.repos.d]# cat /etc/crontab 

shell=/bin/bash

path=/sbin:/bin:/usr/sbin:/usr/bin #注意命令路徑

mailto=root

home=/

# for details see man 4 crontabs

# example of job definition:

# .---------------- minute (0 - 59)

# | .------------- hour (0 - 23)

# | | .---------- day of month (1 - 31)

# | | | .------- month (1 - 12) or jan,feb,mar,apr ...

# | | | | .---- day of week (0 - 6) (sunday=0 or 7) or sun,mon,tue,wed,thu,fri,sat

# | | | | |

# * * * * * user-name command to be executed

* * * * *:定義週期性時間;

user-name:執行任務的使用者身份;

command to be executed:要執行的任務

此處的環境變數不同於使用者登入後獲得的環境變數,因此,建議命令使用絕對路徑。

例如:晚上9點10分執行echo命令:

10 21 * * * gentoo /bin/echo 「hello「

時間表示法:

(1)特定值:給丁時間點有效取之範圍內的值;

(2) * :給定時間上有效取值範圍內的所有值;表示「每。。。「

(3)離散取值:, #,#,#

(4)連續取值:- #-#

(5)指定時間範圍上,定義步長: /#:#即步長

例如:每3小時echo命令

0 */3 * * * gentoo /bin/echo 「hello「

使用者croncrontab命令定義,每個使用者都有專用的cron任務檔案:/var/spool/cron/username

crontab [-u user] [-l | -r | -e] [-i]

-l: 列出所有任務;

-e: 編輯任務;

-r: 移除所有任務;

-i: 同-r一起用,以互動式模式讓使用者有選擇的移除指定任務;

-u user:僅root可執行,代為為指定使用者管理cron任務;

(1) command > /dev/null

(2) command &> /dev/null

對於cron任務來講,%有特殊用途;如果要在命令中使用%,則需要轉義;

不過,如果把%放置於單引號中,也可以不用轉義。

思考:(1)如何實現秒級別執行任務?

* * * * * for min in 0 1 2; do echo "hi"; sleep 20; done

(2)如何實現每7分鐘執行一次任務?

sleep命令: sleep number[suffix]...

suffix:s:秒,預設 m:分鐘 h:小時 d:天

練習:1 每小時備份一次/etc目錄至/backup目錄中,儲存的檔名稱格式為「etc-yyyy-mm-dd-hh.tar.xz「;

0 * * * * /bin/tar -czf /backup/etc-date +%f-%h.tar.gz /etc &> /dev/null

2 每週2,4,7備份/var/log/messagees檔案至/logs目錄中,檔名型如「messages-yyyymmdd「;

0 0 * * 2,4,7 /bin/cp -a /var/log/messages /logs/messages-date +%y%m%d&>/dev/null

3 每兩個小時取出當前系統/proc/meminfo檔案中以s或者m開頭的資訊追加至/tmp/meminfo.txt檔案中;

0 */2 * * * /bin/grep 『1

』 /proc/meminfo >> /tmp/meminfo.txt

4 工作日時間內,每小時執行一次「ip addr ahow「命令;

0 * * * 1-5 /sbin/ip addr show

sm ↩︎

Linux任務計畫 週期性任務執行

at命令用於在指定時間執行命令。執行結果會通過郵件傳送給使用者 at允許使用一套相當複雜的指定時間的方法。它能夠接受在當天的hh mm 小時 分鐘 式的時間指定。假如該時間已過去,那麼就放在第二天執行 語法at 選項 引數 atq 查詢任務列表 atrm 刪除指定任務選項 f 指定包含具體指令的任務...

週期性任務計畫

一次性任務計畫 at,batch 週期性任務計畫 crontab,anacron 一次性任務計畫 at 互動式 讓使用者在 at 提示符輸入多個要執行命令 批處理 讓任務的個命令寫入檔案由 at進行呼叫 at命令 語法 at option time time hh mm yyyy mm dd noo...

Linux任務計畫和週期性任務執行

linux計畫任務有兩類 單一任務at介紹 語法格式 at lfdcq time常用選項 l 檢視作業佇列,相當於atq f 從某個指定檔案檔案中讀取作業任務,不通過互動式輸入。d 刪除指定的作業任務,相當於atrm。c 檢視指定作業具體內容。q queue指明佇列。time時間格式有 hh mm ...