首頁 > 軟體

CentOS環境編寫crontab計劃任務

2020-06-16 18:08:36

管理主機的時候,我們每天有些事情是經常要做的,為了避免每次都手工操作,我們可以編寫計劃任務,來讓主機週期性地按照計劃來自動執行。

安裝啟動
CentOS下:

yum install vixie-cron
yum install crontabs
安裝前者一般會同樣安裝上後者。
啟動服務。

service crond start
要啟動該服務才行。

系統級crontab
用ls /etc/cron然後敲兩下TAB,可以看到相關檔案及目錄。

cron.d/    cron.daily/  cron.hourly/  cron.monthly/ crontab  cron.weekly/
檔案及目錄解讀
我們可以編輯crontab檔案,來建立計劃任務。
而以daily,hourly,weekly,monthly字尾的目錄下分別存放每天,每月,每週,每月執行的任務。
其中存放的就是Shell指令碼檔案,許可權755。我們把要執行的任務寫成Shell指令碼丟進行相應的目錄就可以了。
而不規則週期的計劃任務放在corn.d目錄下面。可以看做是crontab檔案的補充。

crontab檔案格式
該檔案開頭包含必要的環境變數,不再介紹。
具體寫法直接看原始檔注釋:

.---------------- 分鐘 (0 - 59)
| .------------- 小時 (0 - 23)
| | .---------- 幾號 (1 - 31)
| | | .------- 月份 (1 - 12) 或者 jan,feb,mar,apr ...
| | | | .---- 星期 (0 - 6) (星期日=0 或 7) 或者 sun,mon,tue,wed,thu,fri,sat
| | | | |
* * * * * 使用者名稱 要執行的命令

一共七個欄位,其含義一目了然。需要注意的是每個欄位的寫法。
* *表示每一個。比如minute欄位下的*表示每一分鐘執行
* */n表示每隔n。比如hour欄位下,*/2表示每隔兩小時執行。0-10/2表示1,3,5,7,9
* 1-5這種格式表示一共連續的時間段
* 1,3,5這種格式是列舉幾個不連續的時間段

注意:
1. 第三個欄位‘天’和第五個欄位‘星期幾’是或的關係。所以不會衝突,符合兩種情況都執行。
2. 該檔案中如果出現%要進行跳脫,比如date +%w 在該檔案內編寫的時候要寫成date +%w
3. 把分鐘設定成*要慎重!

crontab命令(使用者級)
命令選項
crontab [-u user] file
crontab [-u user] [-e|-l|-r]
選項 描述
e 編輯計劃任務
l 列出計劃任務
r 刪除計劃任務
i 刪除之前確認
u 指明所屬使用者
s selinux context

s選項不常用。

實際上該命令編輯的是/var/spool/cron/使用者名稱 檔案。
所以你也可以直接編輯該檔案。
守護行程crond每分鐘會讀取該檔案一次。

編寫格式
格式與前文中crontab檔案的編寫格式相仿,但是沒有使用者user-name欄位。

因為該命令只能編寫當前使用者的計劃任務。

紀錄檔
在/var/log/cron下面可以看到全部紀錄檔。
而/var/spool/cron/在下面也可以看到一定的紀錄檔。

Linux中利用crontab建立計劃任務 http://www.linuxidc.com/https://www.linuxidc.com/Linux/2013-06/86401.htm

Linux中用crontab例行工作安排 http://www.linuxidc.com/https://www.linuxidc.com/Linux/2013-06/85441.htm

Linux crontab不執行問題排查 http://www.linuxidc.com/https://www.linuxidc.com/Linux/2013-06/85432.htm

Ubuntu使用crontab定時任務 http://www.linuxidc.com/https://www.linuxidc.com/Linux/2013-05/84770.htm

Linux計劃任務(at batch crontab anacron) http://www.linuxidc.com/https://www.linuxidc.com/Linux/2013-03/81584.htm 


IT145.com E-mail:sddin#qq.com