在使用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...