Linux定時清理日志腳本


  在應用瘋狂打日志的情況下,服務器很容易被塞滿磁盤。

  先要寫一個shell腳本,腳本如下。

#!/bin/bash
#----------------使用規范----------------
#1、該文件固定存放在linux的 /usr/local/zjport_test/delFiles 目錄下
#2、各責任人維護好要清理日志文件的目錄,並以注釋方式備注寫明誰維護

#find:linux的查找命令,用戶查找指定條件的文件;
#/opt/soft/log/:想要進行清理的任意目錄;
#-mtime:標准語句寫法;
#+3:查找3天前的文件,這里用數字代表天數;
#"*.log":希望查找的數據類型,"*.jpg"表示查找擴展名為jpg的所有文件,"*"表示查找所有文件,這個可以靈活運用,舉一反三;
#-exec:固定寫法;
#rm -rf:強制刪除文件,包括目錄;
# {} \; :固定寫法,一對大括號+空格+\+; 

echo "del file start....."


#find /home/logs/ -mtime +3 -name "*.log"  -exec rm -rf {} \;
find /usr/local/tomcat/tomcat7-8034-TaskOutside/logs -mtime +0 -name "*.log.*"  -exec rm -rf {} \;
find /usr/local/tomcat/tomcat7-8034-TaskOutside/logs -mtime +0 -name "*.out.*"  -exec rm -rf {} \;
find /usr/local/tomcat/springboot-MIA-exchange/logs/islife -mtime +1 -name "*.log"  -exec rm -rf {} \;
find /root/logs/islife -mtime +0 -name "*.log"  -exec rm -rf {} \;
find /home/yw/logs  -mtime +1 -name "*.log*"  -exec rm -rf {} \;
> /usr/local/tomcat7/logs/catalina.out;



echo "del file end"

  然后要啟動linux的crontab來定時運行這個腳本。

  crontab:定時任務的守護進程,精確到分,設計秒的我們一般寫腳本  -->相當於鬧鍾

 

一、日志定期刪除(Linux)

1、將清理日志的shell腳本放在服務上。根據規定,定一個統一的路徑和統一的命名規范。

2、將文件添加到定時任務crontab

crontab -e:編輯當前用戶的定時任務

crontab -l:查看當前用戶的定時任務

crontab -r:刪除當前用戶的定時任務

3、腳本樣例

#!/bin/bash
echo "del file start....."

find /usr/local/tomcat/tomcat7-8034-TaskOutside/logs -mtime +0 -name "*.log.*" -exec rm -rf {} \;
find /usr/local/tomcat/tomcat7-8034-TaskOutside/logs -mtime +0 -name "*.out.*" -exec rm -rf {} \;
find /usr/local/tomcat/springboot-MIA-exchange/logs/islife -mtime +1 -name "*.log" -exec rm -rf {} \;
find /root/logs/islife -mtime +0 -name "*.log" -exec rm -rf {} \;
find /home/yw/logs -mtime +1 -name "*.log*" -exec rm -rf {} \;
> /usr/local/tomcat/logs/catalina.out echo
"del file end"

4、crontab文件內容分析

cat /etc/crontab

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

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
59 15 * * * /usr/local/zjport_test/delFiles/delFiles_192.168.3.134.sh >dev/null 2>&1

 -----

前四行是用來配置crond任務運行的環境變量

第一行SHELL變量指定了系統要使用哪個shell,這里是bash

第二行PATH變量指定了系統執行命令的路徑

第三行MAILTO變量指定了crond的任務執行信息將通過電子郵件發送給root用戶

如果MAILTO變量的值為空,則表示不發送任務執行信息給用戶

第四行的HOME變量指定了在執行命令或者腳本時使用的主目錄。

小 結:
    數字的表示最好用2為阿拉伯數字顯示
    周和日最好不要同時用
    定時任務要加注解
    可以定向到日志文件或者空文件
    定時任務一定是絕對路徑,且目錄必須存在才能出結果
    crontab 服務一定要開啟運行

# crontab時間問題
最關鍵的,只有 5 個參數,沒有 秒 參數。所以跟標准cron定時表達式不一樣

實例

實例1:每1分鍾執行一次cmd
* * * * * cmd

實例2:每小時的第3和第15分鍾執行
3,15 * * * * cmd
  
實例3:在上午8點到11點的第3和第15分鍾執行
3,15 8-11 * * * cmd

實例4:每隔兩天的上午8點到11點的第3和第15分鍾執行
3,15 8-11 */2  *  * cmd
  
實例5:每周一上午8點到11點的第3和第15分鍾執行
3,15 8-11 * * 1 cmd
  
實例6:每晚的21:30執行
30 21 * * * cmd

實例7:每月1、10、22日的4 : 45執行
45 4 1,10,22 * * cmd

實例8:每周六、周日的1 : 10執行
10 1 * * 6,0 cmd

實例9:每天18 : 00至23 : 00之間每隔30分鍾執行
*/30 18-23 * * * cmd

實例10:每星期六的晚上11 : 00 pm執行
0 23 * * 6 cmd

實例11:每一小時執行
0 */1 * * * cmd

實例12:晚上11點到早上7點之間,每隔一小時執行
0 23-7 * * * cmd

5、常用命令解釋

安裝crontab:

yum install crontabs

crontab服務操作說明:

/sbin/service crond start //啟動服務
 
/sbin/service crond stop //關閉服務
 
/sbin/service crond restart //重啟服務
 
/sbin/service crond reload //重新載入配置

查看crontab服務狀態:

service crond status

手動啟動crontab服務:

service crond start

查看crontab服務是否已設置為開機啟動,執行命令:

方法一: 界面啟動      ntsysv 
方法二: 加入開機自動啟動:   chkconfig –level 35 crond on

查看定時任務列表

crontab -l

編輯定時任務

crontab –e    ==   vim /var/spool/cron/root
 

crontab -r 刪除定時任務

==> 從/var/spool/cron目錄中刪除用戶的crontab文件
==> 如果不指定用戶,則默認刪除當前用戶的crontab文件
 crontab –i  在刪除用戶的crontab文件時給確認提示

備份crontab文件

crontab -l > $HOME/mycron

恢復丟失的crontab文件

如果不小心誤刪了crontab文件,假設你在自己的$ H O M E目錄下還有一個備份,那么可以將其拷貝到/var/spool/cron/<username>,其中<username>是用戶名。如果由於權限問題無法完成拷貝,可以用:
crontab <filename> 其中,<filename>是你在$ H O M E目錄中副本的文件名。
有些crontab的變體有些怪異,所以在使用crontab命令時要格外小心。如果遺漏了任何選項,crontab可能會打開一個空文件,或者看起來像是個空文件。這時敲delete鍵退出,不要按<Ctrl-D>,否則你將丟失crontab文件。
 -


免責聲明!

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



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