linux計畫任務詳解(附演示)

2021-10-08 04:33:59 字數 3433 閱讀 6837

在使用linux系統的過程中,為了解放人力,通常會設定定時任務來減輕設定重複性系統管理任務的操作

systemctl status crond

若為安裝cron,可執行命令yum -y install cron安裝

常用引數說明:

-u user 指定使用者

-e 編輯某個使用者的計畫任務檔案,若不指定使用者,預設編輯當前使用者的計畫任務

-l 顯示某個使用者的計畫任務檔案,若不指定使用者,預設顯示當前使用者的計畫任務

-r 清空某個使用者的計畫任務檔案,若不指定使用者,預設清空當前使用者的計畫任務

使用示例:

crontab -u foo -e     #編輯使用者 foo 的計畫任務檔案

crontab -e #編輯當前使用者的計畫任務檔案

crontab -u foo -l #顯示使用者 foo 的計畫任務檔案

crontab -l #顯示當前使用者的計畫任務檔案

crontab -r #清空當前使用者的計畫任務檔案

crontab通過多個目錄和檔案設定計畫任務,不同型別的任務有不同的配置檔案來設定

/etc/crontab檔案中設定的是維護linux作業系統所需的任務,linux作業系統及相關程式在安裝時可自動設定,不建議使用者手動修改此檔案

[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環境,可執行路徑等變數的操作,以及每小時,每天,每月需要制定的任務目錄。根據/etc/crontab配置檔案中的設定,crond將安裝不同的週期重複執行相應目錄中的指令碼檔案

另外,使用一些特殊符號可實現更靈活的配置

* 代表所有值

/ 代表「每」

- 代表區間

, 代表分割列舉

由使用者自行設定(使用crontab命令)的cron計畫任務會被儲存到目錄/var/spool/cron/中,檔名與使用者名稱相同

[root@localhost cron]# crontab -l

* * * * * sleep 5; /usr/bin/python /mnt/netclient.py >> /mnt/log.txt

5 * * * * /usr/bin/ls /opt/

[root@localhost cron]# pwd

/var/spool/cron

[root@localhost cron]# ll

total 4

-rw-------. 1 root root 97 oct 15 16:32 root

[root@localhost cron]# cat root

* * * * * sleep 5; /usr/bin/python /mnt/netclient.py >> /mnt/log.txt

5 * * * * /usr/bin/ls /opt/

[root@localhost cron]#

crond守護程序會自動檢查/etc/crontab檔案,/etc/cron.d/目錄及/var/spool/cron/目錄中的改動,如果發現有配置更改,它們就會被載入記憶體,所以,當某個crontab檔案改動後並不需要重新啟動,crond守護程序就可以使設定生效。

有時我們不需要乙個作業週期性執行,而是只需要它在未來的某個時間完成一次就好,這時設定乙個一次性任務即可(通過atd服務來實現)

設定一次性任務的前提是atd服務已執行,若未安裝執行yum -y install at

設定一次性任務的時候,在at命令列中一次指定執行任務的時間,日期作為引數(若只指定時間則表示當天的時間,若只指定時間則表示當天的時間,若只指定日期則表示該日期的當前時間)確認後將進入』at>'提示符的任務編輯頁面,每行設定一條執行命令,可以一次設定多條語句,最後按ctrl+d組合鍵提交任務。

[root@localhost ~]# at 18:45 2019-10-15

at> /usr/bin/echo '222' > /opt/abc

at>

job 5 at tue oct 15 18:45:00 2019

can't open /var/run/atd.pid to signal atd. no atd running?

[root@localhost ~]# systemctl start atd

[root@localhost ~]# at 18:45 2019-10-15

at> /usr/bin/echo '222' > /opt/abc

at>

job 6 at tue oct 15 18:45:00 2019

[root@localhost ~]# atq

4 tue oct 15 18:45:00 2019 a root

5 tue oct 15 18:45:00 2019 a root

6 tue oct 15 18:45:00 2019 a root

[root@localhost ~]# cat /opt/abc

222[root@localhost ~]#

atq命令用於檢視未執行的一次性任務

若要刪除指定編號的at任務,可以使用atrm命令。刪除後的at任務將不會被執行,並且不會出現在atq命令的顯示結果中,已經執行過的任務無法刪除。

[root@localhost ~]# atrm 4刪除第四條計畫任務

Linux計畫任務詳解

語法 at option time 常用選項 設定任務執行時間的格式 使用互動式方式建立乙個任務 at ls etc at ctrl d結束輸入 job 8 at sun apr 23 21 53 00 2017 使用指定檔案作為輸入 root localhost at f scripts slee...

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...