crontab安裝和用法(定時任務)


crontab命令常見於Unix和Linux操作系統之中,用於設置周期性被執行的指令。該命令從標准輸入設備讀取指令,並將其存放於“crontab”文件中,以供之后讀取和執行。通常,crontab儲存的指令被守護進程激活。crond 常常在后台運行,每一分鍾檢查是否有預定的作業需要執行。這類作業一般稱為cron jobs。

 

一、安裝

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

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

二、配置

cron 是 linux 的內置服務,但它不自動起來,可以用以下的方法啟動、關閉這個服務:
service crond start     //啟動服務
service crond stop      //關閉服務
service crond restart   //重啟服務
service crond reload    //重新載入配置
service crond status    //查看crontab服務狀態

在CentOS系統中加入開機自動啟動: chkconfig --level 345 crond on

cron 的主配置文件是 /etc/crontab,它包括下面幾行:

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

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

前四行是用來配置 cron 任務運行環境的變量。
SHELL 變量的值告訴系統要使用哪個 shell 環境(在這個例子里是 bash shell);
PATH 變量定義用來執行命令的路徑。
cron 任務的輸出被郵寄給 MAILTO 變量定義的用戶名。
如果 MAILTO 變量被定義為空白字符串(MAILTO=""),電子郵件就不會被寄出。
HOME 變量可以用來設置在執行命令或腳本時使用的主目錄。

 

限制對 cron 的使用:

/etc/cron.allow
/etc/cron.deny 文件被用來限制對 cron 的使用。
這兩個使用控制文件的格式都是每行一個用戶。
兩個文件都不允許空格。
如果使用控制文件被修改了,cron 守護進程(crond)不必被重啟。
使用控制文件在每次用戶添加或刪除一項 cron 任務時都會被讀取。

無論使用控制文件中的規定如何,root 都總是可以使用 cron。

如果 cron.allow 文件存在,只有其中列出的用戶才被允許使用 cron,並且 cron.deny 文件會被忽略。
如果 cron.allow 文件不存在,所有在 cron.deny 中列出的用戶都被禁止使用 cron。

 

三、crontab 命令

功能:設置計時器。

語法crontab[-u <用戶名稱>][配置文件] 或 crontab [-u <用戶名稱>][-elr]
解釋:cron 是一個常駐服務,它提供計時器的功能,讓用戶在特定的時間得以執行預設的指令或程序。只要用戶會編輯計時器的配置文件,就可以使 用計時器的功能。其配置文件格式如下:Minute Hour Day Month DayOFWeek Command

參數:
-e 編輯該用戶的計時器設置。
-l 列出該用戶的計時器設置。
-r 刪除該用戶的計時器設置。
-u<用戶名稱>  指定要設定計時器的用戶名稱。

 

格式:
*   *  *  *  *  command
分 時 日 月 周  命令

第1列表示分鍾1~59 每分鍾用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要運行的命令

 

例子:
*/5 * * * * root ab -n 2000 http://60.217.229.252/250k.jpg

上面例子表示每5分鍾模擬用戶訪問http://60.217.229.252/250k.jpg 2000次

 

30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重啟apache。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重啟apache。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重啟apache。

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之間每隔30分鍾重啟apache。

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重啟apache。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小時重啟apache

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11點到早上7點之間,每隔一小時重啟apache

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4號與每周一到周三的11點重啟apache

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一號的4點重啟apache

*/30 * * * * /usr/sbin/ntpdate 210.72.145.44
每半小時同步一下時間

 

轉自:http://hi.baidu.com/faoduqsldrimrwe/item/a7c474d7bb8280cbcb0c393a?qq-pf-to=pcqq.temporaryc2c


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM