定時任務


第1章  定時任務

1.1 .定時任務的作用

定時任務相當於鬧鍾

在什么時間做什么事情(執行什么命令/腳本)

 

1.2 .定時任務分類

①atd                       運行一次 僅一次。

②anacron               非7*24小時運行的服務器

③crond(crontab)    常用的定時任務軟件 軟件包cronie   

 如何檢查軟件是否安裝

.rpm  Linux rpm軟件管理命令
   -q   --query 查詢
   -a   --all 所有 
   -l   --list 
   -qa  查看軟件是否安裝
   -ql  顯示軟件里面的內容
   -qf  查詢某個命令/配置文件屬於哪個軟件包

 

[root@lishichao ~]# which ip

/sbin/ip

[root@lishichao ~]# rpm -qf /sbin/ip

iproute-2.6.32-54.el6.x86_64

[root@lishichao ~]# rpm -ql iproute

rpm -ivh 軟件包.rpm  安裝rpm包

 

   系統光盤中                                     

 

1.3 CRON分類

1.3.1 系統定時任務

/etc/cron.hourly              系統定時任務每個小時運行目錄里面的內容

/etc/cron.daily                系統定時任務每天運行目錄里面的內容

/etc/cron.weekly            系統定時任務每周小時運行目錄里面的內容

/etc/cron.monthly          系統定時任務每月運行目錄里面的內容   

系統會自動運行里面的內容, 系統中毒的時候查看這些系統文件

 /etc/cron.deny  

/etc/crontab                系統定時任務的配置文件之一

 

1.3.2  系統定時任務+logrotale命令 完成對日志切割/日志輪詢

  /var/log/cron               定時任務文件

  /var/log/messages      系統默認日志文件

  /var/log/secure           用戶登錄信息

 

1.3.3用戶定時任務

crontab –l (list)列表  查看用戶的定時任務

crontab –e (edit)編輯  編輯用戶的定時任務

/var/spool/cron/root (root是用戶名 root用戶的定時任務)   一個命令+一個目錄

 

1.4 定時任務的使用

1. 定時任務依賴的軟件(服務)-是否能用

 

 

 現在能用(crond進程正在運行),重啟后也能用(crond開機自啟動)  pid 進程號碼

 ps –ef |grep crond

 

2. crontab 命令怎么使用

 crontab  -e          編輯當前用戶的定時任務  相當於   vi /var/spool/cron/root

 crontab  -l          顯示當前用戶的定時任務  相當於   cat  /var/spool/cron/root

當前是 root用戶用

crontab命令 1.有語法檢查功能 格式不對有提示 2.方便

 

 

3. 定時任務相關文件

 var/log/cron             定時任務的日志文件  運行過程的一個記錄

 var/spool/cron/          每個用戶的定時文件

 /etc/cron.deny           那些用戶禁止使用定時任務-定時任務黑名單

 

 

4. 定時任務格式

          *   *   *   *   *                                            口訣  什么時間做什么,然后想在下一次什么時間在執行

         分時日月周                                               注意!!  不要把星期幾和日期同時加上

         

 

5. 定時任務常用符號

 *每     *  *  *  *  *

 /n     */10 * * * *  每隔10分鍾

 -      07-09 
 ,      分割

 %      在定時任務中 % 有特殊含義  相當於回車  需要\轉義

 

   ##每天的上午8點30分

   30 08 * * * 

 

   ##每天晚上12 

 00 00 * * * go to bed

 

  ##每天的上午7點到上午11點 每一個小時運行CMD命令

 00  07-11 * * *  CMD

 

 ##每天 17點 19 點 20點

 00 17,19,20 * * *

 

 

 

 

 

 

6.  定時任務書寫流程

 

    01. 命令行測試  把你的名字顯示到文件中

 

 

    02. 把命令放入到腳本中、測試是否可以使用   現在的統一腳本位置  /server/scripts

 

 

    03. 寫定時任務 (1.先設置每分鍾執行 查看定時任務是否執行成功 2.成功后改為要求的時間)

  ##注意加上注釋  說明這個定時的內容

 

 

    04. 檢查結果

tailf /var/log/cron        查看日志實時更新

cat /root/oldboy.txt     查看文件內容是否增加 命令是否執行成功

 

 

 

 

 

 

1.5 定向為空

 /dev/nuli

        把/dev/null看作"黑洞". 它非常等價於一個只寫文件. 所有寫入它的內容都會永遠丟失.  /dev/null對命令行和腳本都非常的有用    

 

       定時任務中-命令或腳本結果(正確或錯誤)定向到黑洞或追加到文件

 > /dev/null 2>&1  錯誤的正確的都存放進去
追加到文件中   >> /tmp/time.log 2>&1

 

 

 

   故障案例

   如果沒有定向到空 或追加到文件

  1.  postfix開啟的時候,系統會不斷的給你發郵件      /var/spool/mail/

        You have new mail in /var/spool/mail/root      系統郵件目錄 創建一個用戶默認就創建一個郵件文件

 

       etc/init.d/postfix  stop(關閉) start(開啟)  status查看

      工作中發郵件的軟件 一般是關閉的 postfix(centos 6)  sendmail(centos 5)

 

 

 2.  postfix關閉  郵件會存放在郵件的臨時目錄(/var/spool/postfix/maildrop)

      如果定時任務規則結尾不加 >/dev/null  2>&1

      或者追加到文件中              >>/tmp/oldboy 2>&1

 

      一個郵件創建一個文件會造成大量的小文件,很容易導致硬盤inode空間被占滿,從而系統服務不正常

  

  3. 如何刪除大量小文件

 echo {1..450000}.txt

 ls *.txt |xargs rm     Argument list too long 參數列表太長  系統忙不過來

 

  01. 縮小范圍一點點刪除  ls 1*.txt|xargs rm 或 ls *.txt|xargs –n數字 rm

  02.  刪除目錄  記錄好目錄權限和所有者

 

 

1.6 環境變量故障案列

http://blog.51cto.com/oldboy/1541515  inux定時任務生產java服務無法執行問題群友案例

 

 

1.  定時任務在運行腳本的時候,只認識很少的幾個路徑   /usr/bin    /bin

     定時任務腳本中的程序文件 要用絕對路徑

2.  在寫腳本時候 在開頭重新定義了環境變量 PATH  把定時任務不認識命令的絕對路徑寫進去

 

 

查詢腳本執行過程  -x

 

 

1.7 查看定時任務日志內容

 1. head/tail

 2. grep

 3. less   查看文件    一頁一頁  顯示/查看

          下一頁  空格  上一頁 b   退出 q    

 4. less/more  只能往下查看   不支持快捷鍵   到最后一行自動退出

 

                                                                                

 


免責聲明!

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



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