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

2021-08-20 13:42:18 字數 4442 閱讀 2770

linux計畫任務有兩類

單一任務at介紹:

語法格式:at

-[lfdcq]

time

常用選項:

-l 檢視作業佇列,相當於atq

-f 從某個指定檔案檔案中讀取作業任務,不通過互動式輸入。

-d 刪除指定的作業任務,相當於atrm。

-c 檢視指定作業具體內容。

-q queue指明佇列。

time時間格式有:

hh:mm 小時:分鐘 例如04:00

hh:mm yyyy-mm-dd 小時:分鐘 年-月-日 例如15:00 2017-11-25

hh:mm[am|pm] [month] [date] 例如:04pm july 30

hh:mm[am|pm] + number [minutes|hours|days|weeks]在某個時間點再加幾個時間後執行

例如:now + 5minutes 5分鐘後執行

04pm + days三天後下午4點執行

[root@dxlcentos ~]# at 15:55 2017-11-25 在15點55分執行:切換到tmp目錄,執行ls命令

at> cd /tmp

at> ls

at>

job 3 at sat nov 25 15:55:00 2017

注意:輸入結束後按ctrl+d,任務輸入結束at> ,執行結果螢幕不會顯示,會以郵件形式傳送到郵箱。要是沒有mail命令,進行yum -y install mailx安裝。

batch命令:系統空閒時才進行的背景任務,他是通過at下達的。

週期性任務計畫cron

執行週期性任務要確保crond守護程序在執行。

執行pstree,要是crond執行起來可以看到。

或者執行:~]# systemctl status crond (centos7)

active: active (running) … …

centos6:~]# service crond status

… is running

有時候為了安全起見,可以將不允許某些使用者執行週期性任務的使用者名稱新增到/etc/cron.deny檔案裡面即可。

cron任務分類:分系統cron任務和使用者cron任務

系統cron任務:主要用於維護系統自身。

系統cron任務格式

1 shell=/bin/bash                      使用哪種shell介面

2 path=/sbin:/bin

:/usr/sbin

:/usr/bin  執行檔案搜尋路徑

3 mailto=root                         以email將資料發給誰

45# for details see man 4 crontabs67

# example of job definition:

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

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

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

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

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

13# |  |  |  |  |

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

(1) 每一行定義乙個週期性任務,共7個字段。

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

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

command to be executed:要執行的任務。

(2) 此處的環境變數不同於使用者登入後獲得的環境,因此,建議命令使用絕對路徑,或者自定義path環境變數;

(3) 執行結果以郵件形式傳送給mailto指定的使用者。

使用者cron任務:

當使用者使用crontab命令來建立週期任務後,這項工就會被記錄到/var/spool/cron/username這個檔案中去,

他們以使用者名稱來區分。

crontab [-u username]  [-l|-e|-r]

-u  只要有root使用者才能進行這個任務,即為其他使用者建立或刪除crontab任務。

-l  列出所有任務。

-e  編輯任務。

-r  刪除所有crondtab任務,即刪除/var/spool/cron/username檔案,若要刪除一項,可以用-e選項去編輯。

使用者週期性任務定義格式:

*  *  *  *  *   command to be executed

對應意義為:分  時  日  月  周   使用者指令

每行定義乙個任務,共六個字段。任務執行後的結果以郵件發給使用者。

週期任務時間表示法:

分(0-59)  時(0-23)  日(1-31)  月(1-12)  周 (0-7 0和7都代表星期天)

星號* :表示任何時刻意思

逗號",":b表示時段分隔,指定多個時間點做某事,例如當我要下達的任務是在每天3:00月6:00時,

0  3,6  *  *  *  command  時間引數還是5欄

減號「-」:表示一段時間範圍,例如我要在8點到12點之間的每小時20分進行一

項工作, 20  8-12  *  *  *  command

/n :n代表數字,即是每隔n個時間單位意思,例如每5分鐘進行一次。

*/5  *

*  *  *   command

常見例項:

示例:(1) 3 * *

* *:每小時執行一次;每小時的第3分鐘;

(2) 3 4 * * 5:每週執行一次;每週5的4點3分;

(3) 5 6 7 * *:每月執行一次;每月的7號的6點5分;

(4) 7 8 9 10 *:每年執行一次;每年的10月9號8點7分;

(5) 9 8 * * 3,7:每週三和週日8點09分;

(6) 0 8,20 * * 3,7:每週三和週日8點和20

(7) 0 9-18 * * 1-5:每週一到周五9點到18點

(8) */5 *

* * *:每5分鐘執行一次某任務;

應用例項:

1.每4小時執行一次對/etc目錄的備份,備份至/backup目錄中,儲存的目錄名為形如etc-201504020202

[centos@dxlcentos ~]$ crontab -e  進入編輯介面

0 */4 * * *  cp -a  /etc /backup/etc-$(date +\%y\%m\%d\%h\%m)

2.每週2,4,6備份/var/log/messages檔案至

/backup/messages_logs/目錄中,儲存的檔名形如messages-20150402

[centos@dxlcentos ~]$ crontab -e

00 * * 2,4,6  cp -a  /var/log/messages /backup/messages-$(date +\%y\%m\%d)

3.每天每兩小時取當前系統/proc/meminfo檔案中的所有以s開頭的資訊至/stats/memory.txt檔案中

[centos@dxlcentos ~]$ crontab -e

0 */2 * * *   cat  /proc/meminfo | grep "^s" >> /stats/memory.txt

4.工作日的工作時間內,每兩小時執行一次echo 」howdy」

[centos@dxlcentos ~]$ crontab -e 09

-18/2 * * 1

-5   echo 「howdy」

總結:1.cron週期任務最小時間單位是分鐘。

2.定義command時,如果命令需要用到%,需要對其轉義;但放置於單引號中的%不用轉義亦可。

3.某任務在指定的時間因關機未能執行,下次開機不會自動執行。

4.當修改之前定好的任務或新增迴圈任務時最好執行一下systemctl restart crond。

5.如果是系統管理使用的迴圈任務最好寫入/etc/crontab。

6.避免系統資源分配不均,周與日月不可以同時並存。

anacron可換醒停機期間的工作任務

cron迴圈任務設定後,要是伺服器因意外關機,那麼在停機期間,cron設定的迴圈任務是不會執行的,當伺服器開機後,也不會執行過去到達時間點的迴圈任務,只能等待下個時間點到來才執行。要想重新執行,anacron就可以解決這個問題。

anacron 是乙個程式不是乙個服務,當centos進入crontab排程時,anacron 會主動每一小時執行一次。

出處:

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

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

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

概述 什麼是計畫任務呢?就像我們每個人日常生活中都會使用到的鬧鐘一樣,按時的去提醒該幹什麼事,以免忘記。同樣,我們在工作中也要每天在特定的時間內安排一些事情,這就是計畫任務。未來的某時間點執行以此任務 at,batch 週期性執行某任務 cron at命令 用法 at option time tim...

週期性任務計畫

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