歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> CentOS環境編寫crontab計劃任務

CentOS環境編寫crontab計劃任務

日期:2017/2/28 14:22:41   编辑:Linux教程

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

安裝啟動
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//Linux/2013-06/86401.htm

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

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

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

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

更多CentOS相關信息見CentOS 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=14

Copyright © Linux教程網 All Rights Reserved