Linux——定時清空日志內容和刪除日志文件


 

前言

最近在做性能壓測試,會生成大量的日志,導致后續越壓越慢,最終磁盤空間占滿之類的問題。老是要手動刪除日志文件,為避免此類問題發生,編寫一個Linux日志定時清理的腳本,一勞永逸。

 

 

1、shell腳本

  • 創建腳本並賦權
touch /home/mppay/auto-truncate-log.sh
chmod u+x auto-truncate-log.sh

 

  • 編輯腳本
vi auto-truncate-log.sh

【清空日志文件內容】腳本如下:

#!/bin/sh
#可填寫多個路徑
workdir=("/home/mppay/apache-tomcat-7.0.73/logs" "/home/mppay/logs")
for wdir in ${workdir[@]}; do
  echo -e "filepath is ${wdir}"
  # .log 文件和包含 log 標記的 .txt文件,以及 catalina.out 文件
  find $wdir -regex "^.*\(\.log\|log.*\.txt\|catalina.out\)$" -type f -print -exec truncate -s 0 {} \;
  if [ $? -eq 0 ]; then
    echo -e `date`" truncate logs successfully! \n"
  else
    echo -e `date`" truncate logs failed! \n"
  fi
done

 【刪除日志文件】腳本如下:

#!/bin/sh
#可填寫多個路徑
workdir=("/home/mppay/apache-tomcat-7.0.73/logs" "/home/mppay/logs")
for wdir in ${workdir[@]}; do
  echo -e "filepath is ${wdir}"
  # .log 文件和包含 log 標記的 .txt文件,以及 catalina.out 文件
  find $wdir -regex "^.*\(\.log\|log.*\.txt\|catalina.out\)$" -and -mtime +5 -type f -exec  rm  -rf  {} \;
if [ $? -eq 0 ]; then echo -e `date`" delete logs successfully! \n" else echo -e `date`" delete logs failed! \n" fi done

 

  • 命令說明:
find 路徑 -name "文件名" -type f -print -exec truncate -s 0 {} \;  #清空文件內容
find 路徑 -mtime +天數 -type f -name "文件名" -exec rm -rf {} ;    #刪除文件
 find:Linux查找命令,用戶查找指定條件的文件
-regex:此參數表示后面的輸入使用正則表達式進行書寫。若為 -name 則后面使用一般字符串書寫,此時可以使用通配符,但正則相關的符號將會被保留。
     shell正則:
^ 表示正則匹配字符串開頭,$ 表示正則匹配字符串的結尾,其他一些和正則使用的非字母的符號需要進行轉義;. 表示匹配任意字符;所以文件路徑中出現的 . 需要進行轉義。
-and:表示再次同等使用命令的相關參數,如此處的 -mtime ;
-mtime:表示使用修改時間屬性,后面的 +7 表示滿足超過7天,即修改時間在7天以上的文件或文件夾;而 -7 表示滿足不足7天, 7 表示剛好7天;
-type:表示查找的文件屬性,后面 f 表示查找文件,而 d 表示查找文件夾;
-print:將符合的文件打印出來;
-exec:表示后面要對前面匹配的文件或文件夾執行后面的命令。注意后面的命令需要一對兒{},一個空格和一個,最后是一個分號來結束;

 

 

2、crontab計划任務

將 auto-truncate-log.sh 執行腳本加入到系統計划任務,定時自動執行:

crontab -e

輸入:

* */1 * * * /home/mppay/auto-truncate-log.sh >> /home/mppay/auto-truncate-log.log

這里設置每隔1小時執行auto-truncate-log.sh文件進行日志清理任務,同時指定的日志輸出。

執行結果:


免責聲明!

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



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