天天一個linux命令9之crontab 定時任務

     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是針對系統的任務。此文件的文件格式是:
 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //若是出現錯誤,或者有數據輸出,數據做爲郵件發給這個賬號
HOME=/      //使用者運行的路徑,這裏是根目錄
# run-parts
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保存退出便可(若是未執行,記得重啓服務便可)







相關文章
相關標籤/搜索