Linux計畫任務詳解

2021-08-19 12:57:27 字數 4871 閱讀 2601

語法:at [option]... time

常用選項:

設定任務執行時間的格式:

使用互動式方式建立乙個任務:

at> ls /etc

at> #ctrl+d結束輸入

job 8

at sun apr 23

21:53:00

2017

使用指定檔案作為輸入:

[root@localhost ~]# at -f ~/scripts/sleep500s.sh now+10min 

job 9 at sun

apr2321:

58:002017

檢視任務佇列:

[root@localhost ~]# at

-l8 sun

apr 23 21:53

:00 2017 a

root

9 sun

apr 23 21:58

:00 2017 a

root

[root@localhost ~]# atq

8 sun

apr 23 21:53

:00 2017 a

root

9 sun

apr 23 21:58

:00 2017 a

root

刪除指定任務:

[root@localhost ~]# at -d 8

[root@localhost ~]# atrm 9

at> ls /etc

at> job 12

at sun apr 23

21:58:00

2017

有時候,我們需要系統執行一些週期性的任務,比如說,定期備份、定期清理臨時檔案等操作。linux系統通過crond服務實現這一功能。centos上crond守護程序預設是有安裝並開啟了的。centos 5、6上可以使用service crond status檢視crond是否正在執行,centos 7上可以使用systemctl status crond.service檢視。

crond需要使用/etc/crontab主配置檔案和/etc/cron.d目錄下的子配置檔案來儲存週期性任務,為了確保配置檔案的格式不發生錯誤,要使用crontab命令編輯配置檔案。

cron週期性任務分為系統級週期性任務和使用者週期性任務。系統級週期性任務記錄在/etc/crontab主配置檔案和/etc/cron.d目錄下的子配置檔案中;使用者週期性任務記錄在/var/spool/cron目錄下以各使用者名稱命名的檔案中。

/etc/cron.allow,存放被允許使用cron週期性任務的使用者名單;/etc/cron.deny,存放不被允許使用cron週期性任務的使用者名單。兩個檔案的格式都是將使用者名稱填入檔案中,每個使用者名稱佔一行。兩個檔案只生效乙個,若/etc/cron.allow存在,生效之;否則,生效/etc/cron.deny。

/etc/crontab:

該檔案是系統級cron任務的配置檔案,主要用於實現系統自身的週期性自動維護。其配置檔案的格式如下:

[root@localhost ~]# cat /etc/crontab 

shell=/bin/bash

path=/sbin:/bin

:/usr/sbin

:/usr/bin

mailto=root

# 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

其中的shell定義了週期性任務使用的直譯器;path為重新定義的命令路徑環境變數;mailto定義了任務執行後的結果傳送給哪個使用者的郵箱。

在/etc/crontab檔案中,每一行定義乙個週期性任務,每行的各欄位定義如下:

週期性任務時間的設定方式如下:

匹配範圍

使用符號

匹配任意時間值

*:可以匹配任意整數

匹配指定時間值

#:可以匹配任意給定的乙個整數值

匹配離散時間值

#,#…,#:可以匹配多個給定的整數值

匹配連續時間值

#-#:可以匹配給定的某個區間內的所有整數值

固定時間間隔執行一次

*/#;可以匹配任意指定的時間間隔,但需能被#整除

使用示例: |週期性任務時間要求|配置檔案中時間欄位的值| |————|:————–:| |每小時任務;每小時的第3分鐘執行一次|3 * * * * | |每週任務;每週五的4點3分執行一次|3 4 * * 5 | |每月任務;每月的7號的6點5分執行一次|5 6 7 * * | |每年任務;每年的10月9號8點7分執行一次|7 8 9 10 *| |每週三和週日執行一次|1 1 * * 3,5 | |每月6號至11號5點4分執行一次|4 5 6-11 * *| |每5分鐘執行一次| \*/5 * * * * | **/etc/corn.d目錄:** 為了方便管理系統級週期性任務,除了/etc/crontab檔案作為配置系統級週期性任務的主配置檔案外,我們還可以/etc/cron.d目錄下建立多個子配置檔案,分類的存放系統級週期性任務。子配置檔案的格式和主配置檔案格式相同。 我們可以根據週期任務的執行週期,或為哪些應用程式服務,進行分類,如下。

[root@localhost ~]# ls /etc/cron.d

0hourly raid-check sysstat unbound-anchor

/etc/cron.hourly目錄、/etc/cron.daily目錄和/etc/cron.monthly目錄分別用於存放執行週期為小時、天、月的可執行檔案,例如可執行指令碼檔案。我們在週期性任務配置檔案中配置一行週期性任務run-parts,便能執行多個週期相同的任務了。(注:run-parts命令的使用在下一小節有加以介紹)

如/etc/cron.d/0hourly檔案中,便以小時為週期執行/etc/hourly目錄下的可執行檔案,如下:

[root@localhost ~]# cat /etc/cron.d/0hourly 

# run the hourly jobs

shell=/bin/bash

path=/sbin:/bin

:/usr/sbin

:/usr/bin

mailto=root

01 * * * * root run-parts /etc/cron.hourly

每個使用者定義的週期性任務,都存放在/var/spool/cron目錄下以自己的名字命名的檔案中。檔案內容的格式與系統級週期性任務的配置檔案/etc/crontab相似,但少了user-name欄位,即格式示例如下:

[root@localhost ~]# cat /var/spool/cron/kamin 

* 19 * * * ls /

通過對/var/spool/cron目錄下配置檔案的修改,來提交週期性任務。但為了避免使用vim編輯器編輯時,語法錯誤使得週期性任務無法執行,我們必須使用專用的、帶有語法檢查的工具crontab來提交任務。

語法:crontab [-u user] [-l | -r | -e] [-i] [-s]

選項:

格式:run-parts [--list|--test]

選項:

run-parts的使用示例:

列出/etc目錄下的所有檔案:

[root@localhost ~]# run-parts --list /etc

/etc/dir_colors

/etc/dir_colors.256color

...省略更多資訊...

列出/etc目錄下的所有可執行檔案:

[root@localhost ~]# run-parts --test /etc

/etc/auto.net

/etc/auto.smb

執行./scripts目錄下的所有檔案(指令碼test1.sh和test2.sh):

[root@localhost ~]# run-parts ./scripts/

./scripts/test1.sh:

this is a test scripts.

./scripts/test2.sh:

this is test2.sh

Linux計畫任務入門詳解

linux作業系統定時任務系統 cron 入門 cron是乙個linux下的定時執行工具,可以在無需人工干預的情況下執行作業。由於cron 是linux的內建服務,但它不自動起來,可以用以下的方法啟動 關閉這個服務 sbin service crond start 啟動服務 sbin service...

Linux計畫任務入門詳解

linux作業系統定時任務系統 cron 入門 cron是乙個linux下的定時執行工具,可以在無需人工干預的情況下執行作業。由於cron 是linux的內建服務,但它不自動起來,可以用以下的方法啟動 關閉這個服務 sbin service crond start 啟動服務 sbin service...

Linux計畫任務入門詳解

linux作業系統定時任務系統 cron 入門 cron是乙個linux下的定時執行工具,可以在無需人工干預的情況下執行作業。由於cron 是linux的內建服務,但它不自動起來,可以用以下的方法啟動 關閉這個服務 sbin service crond start 啟動服務 sbin service...