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
每月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。
0 */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小時重啟apache
每一小時重啟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是針對系統的任務。此文件的文件格式是:
SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root //如果出現錯誤,或者有數據輸出,數據作為郵件發給這個帳號HOME=/ //使用者運行的路徑,這里是根目錄# run-parts01 * * * * 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后台執行命令
* * * * * command &
當在前台運行某個作業時,終端被該作業占據;而在后台運行作業時,它不會占據終端。可以使用&命令把作業放到后台執行。在后台運行作業時要當心:需要用戶交互的命令不要放在后台執行,因為這樣你的機器就會在那里傻等。
可以把輸出接口放到某一個溫江中
2>&1表示所有的標准輸出和錯誤輸出都將被重定向到一個叫做log.file 的文件中
command
>log.file
2>&1 &
3. 系統級任務調度與用戶級任務調度
系統級任務調度主要完成系統的一些維護操作,用戶級任務調度主要完成用戶自定義的一些任務,可以將用戶級任務調度放到系統級任務調度來完成(不建議這么做),但是反過來卻不行,root用戶的任務調度操作可以通過“crontab –uroot –e”來設置,也可以將調度任務直接寫入/etc/crontab文件,需要注意的是,如果要定義一個定時重啟系統的任務,就必須將任務放到/etc/crontab文件,即使在root用戶下創建一個定時重啟系統的任務也是無效的。
系統級任務調度主要完成系統的一些維護操作,用戶級任務調度主要完成用戶自定義的一些任務,可以將用戶級任務調度放到系統級任務調度來完成(不建議這么做),但是反過來卻不行,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保存退出即可(如果未執行,記得重啟服務即可)