crond 是linux用來按期執行程序的命令。當安裝完成操做系統以後,默認便會啓動此 任務調度命令。crond命令每分鍾會按期檢查是否有要執行的工做,若是有要執行的工做便會自動執行該工做。linux
1語法
* * * * * command
分 時 日 月 周 命令
第1列表示分鐘1~59 每分鐘用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要運行的命令
2例子
30 21
* * * /usr/local/etc/rc.d/lighttpd restart
每晚的21:30重啓apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
每個月一、十、22日的4 : 45重啓apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
每週6、週日的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。
0 */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小時重啓apache
0 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11點到早上7點之間,每隔一小時重啓apache
3命令
crontab -l :列出用戶目前的定時任務
crontab -r : 刪除目前的時程表
crontab -e : 執行文字編輯器來設定時程表,內定的文字編輯器是 VI.
/sbin/service crond start //啓動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啓服務
/sbin/service crond reload //從新載入配置
在/etc/rc.d/rc.local這個腳本的末尾加上:
/sbin/service crond start
4新增調度任務
方式1:在命令行輸入: crontab -e 而後添加相應的任務,wq存盤退出
推薦自定義的任務使用crontab -e命令添加,退出後用/etc/init.d/crond restart命令重啓crond進程,官方文件說不用重啓進程,但我遇到不重啓沒法運行任務的狀況。
方式2:編輯/etc/crontab文件
cron服務每分鐘不只要讀一次/var/spool/cron內的全部文件,還須要讀一次/etc/crontab
,
所以咱們配置這個文件也能運用cron服務作一些事情。用crontab配置是針對某個用戶
的,而編輯/etc/crontab是針對系統的任務。此文件的文件格式是:
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //若是出現錯誤,或者有數據輸出,數據做爲郵件發給這個賬號
01 * * * * root run-parts /etc/cron.hourly //每小時執行/etc/cron.hourly內的腳本
02 4 * * * root run-parts /etc/cron.daily //天天執行/etc/cron.daily內的腳本
22 4 * * 0 root run-parts /etc/cron.weekly //每星期執行/etc/cron.weekly內的腳本
42 4 1 * * root run-parts /etc/cron.monthly //每個月去執行/etc/cron.monthly內的腳本
你們注意"run-parts"這個參數了,若是去掉這個參數的話,後面就能夠寫要運行的某個腳本名,而不是文件夾名了。
5後臺執行命令web
* * * * * command &apache
當在前臺運行某個做業時,終端被該做業佔據;而在後臺運行做業時,它不會佔據終端。可使用&命令把做業放到後臺執行。在後臺運行做業時要小心:須要用戶交互的命令不要放在後臺執行,由於這樣你的機器就會在那裏傻等。tomcat
能夠把輸出接口放到某一個溫江中bash
2>&1表示全部的標準輸出和錯誤輸出都將被重定向到一個叫作log.file 的文件中編輯器
command
>log.file
2>&1 &
url
3. 系統級任務調度與用戶級任務調度
系統級任務調度主要完成系統的一些維護操做,用戶級任務調度主要完成用戶自定義的一些任務,能夠將用戶級任務調度放到系統級任務調度來完成(不建議這麼作),可是反過來卻不行,root用戶的任務調度操做能夠經過「crontab –uroot –e」來設置,也能夠將調度任務直接寫入/etc/crontab文件,須要注意的是,若是要定義一個定時重啓系統的任務,就必須將任務放到/etc/crontab文件,即便在root用戶下建立一個定時重啓系統的任務也是無效的。
我的工做案例
按期刪除文件夾下10天前的日誌
1編寫腳本 clearlog.sh
find /data/web/tomcat_lianyun/log/*.log.* -ctime +10|xargs rm -f
2添加到定時任務中
crontab -e
30 8 * * * /data/web/tomcat_lianyun/clearlog.sh
wq保存退出便可(若是未執行,記得重啓服務便可)