1. 程式人生 > 其它 >Crontab 定時執行指令碼配置

Crontab 定時執行指令碼配置


1.安裝crontab

[root@CentOS ~]# yum install vixie-cron
[root@CentOS ~]# yum install crontabs

vixie-cron軟體包是cron的主程式;
crontabs軟體包是用來安裝、卸裝、或列舉用來驅動 cron 守護程序的表格的程式。


2.crontab服務

#啟動服務
service crond start

#關閉服務
service crond stop

#重新啟動服務
service crond restart

#又一次載入配置
service crond reload

#檢視crontab服務狀態:
service crond status

#手動啟動crontab服務:
service crond start

#檢視crontab服務是否已設定為開機啟動,執行命令:
ntsysv

#加入開機自己主動啟動:
chkconfig –level 35 crond on


#設定開機自己主動啟動crond服務:

[root@CentOS ~]# chkconfig crond on

#檢視各個開機級別的crond服務執行情況

[root@CentOS ~]# chkconfig –list crond

#crond 0:關閉 1:關閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關閉

#能夠看到2、3、4、5級別開機會自己主動啟動crond服務

#取消開機自己主動啟動crond服務:

[root@CentOS ~]# chkconfig crond off


3.設定須要執行的指令碼

新增排程任務可用兩種方法:

1)、在命令列輸入: crontab -e 然後加入對應的任務,wq存檔退出。

2)、直接編輯 /etc/crontab 檔案。即 vi /etc/crontab,加入對應的任務。

crontab -e 配置是針對某個使用者的。

而編輯 /etc/crontab 是針對系統的任務

檢視排程任務

列出當前全部排程任務 crontab -l

列出使用者jp的全部排程任務 crontab -l u jp

刪除任務排程工作

刪除全部任務排程工作 crontab -r

直接編輯 vim /etc/crontab ,預設的檔案形式如下:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# 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

例項1

5      *       *           *     *     ls         指定每小時的第5分鐘執行一次ls命令
30     5       *           *     *     ls         指定每天的 5:30 執行ls命令
30     7       8           *     *     ls         指定每月8號的7:30分執行ls命令
30     5       8           6     *     ls         指定每年的6月8日5:30執行ls命令
30     5       8           6     *     ls         指定每年的6月8日5:30執行ls命令
30     6       *           *     0     ls         指定每星期日的6:30執行ls命令
30     3     10,20         *     *     ls         每月10號及20號的3:30執行ls命令
25     8-11    *           *     *     ls         每天8-11點的第25分鐘執行ls命令
*/15   *       *           *     *     ls         每15分鐘執行一次ls命令
30     6     */10          *     *     ls         每一個月中。每隔10天6:30執行一次ls命令
22     4       *           *     *     root     run-parts     /etc/cron.daily
#每天4:22以root身份執行/etc/cron.daily資料夾中的全部可執行檔案,run-parts引數表示。執行後面資料夾中的全部可執行檔案。

星號(*):代表全部可能的值。比如month欄位假設是星號。則表示在滿足其他欄位的制約條件後每月都執行該命令操作。

逗號(,):能夠用逗號隔開的值指定一個列表範圍,比如。“1,2,5,7,8,9”

中槓(-):能夠用整數之間的中槓表示一個整數範圍,比如“2-6”表示“2,3,4,5,6”

正斜線(/):能夠用正斜線指定時間的間隔頻率,比如“0-23/2”表示每兩小時執行一次。同一時候正斜線能夠和星號一起使用。比如*/10,假設用在minute欄位,表示每十分鐘執行一次。

例項2

#每晚的21:30 重新啟動apache
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
#每月1、10、22日的4 : 45重新啟動apache
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
#每週六、週日的1 : 10重新啟動apache
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
#每天18 : 00至23 : 00之間每隔30分鐘重新啟動apache
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
#每星期六的11 : 00 pm重新啟動apache
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
#晚上11點到早上7點之間,每隔一小時重新啟動apache
0 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
#每一小時重新啟動apache
0 */1 * * * /usr/local/etc/rc.d/lighttpd restart
#每月的4號與每週一到週三的11點重新啟動apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
#一月一號的4點重新啟動apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
#每半小時同步一下時間
0/30 * * * * /usr/sbin/ntpdate 210.72.145.44

注意點:

* *1 * * * 命令表示是每小時之內的每一分鐘都執行。

第一個 * 號必須改成一個數值

另外小時位的 /1 ,是每小時一次

假設是設定 */2, 實際上是能被2整除的小時數,而不是從定時設定開始2小時後執行。

第一次使用crontab,還沒生成對應的crontab檔案,需要先在root使用者下輸入 crontab -e,然後輸入 crontab -l才會顯示內容