tomcat,nginx日志定時清理


1. Crontab定時任務

   Crontab 基本語法

  t1 t2 t3 t4 t5 program
  • 其中 t1 是表示分鍾,t2 表示小時,t3 表示一個月份中的第幾日,t4 表示月份,t5 表示一個星期中的第幾天。program 表示要執行的程序。
  • 當 t1 為 * 時表示每分鍾都要執行 program,t2 為 * 時表示每小時都要執行程序,其餘類推
  • 當 t1 為 a-b 時表示從第 a 分鍾到第 b 分鍾這段時間內要執行,t2 為 a-b 時表示從第 a 到第 b 小時都要執行,其餘類推
  • 當 t1 為 */n 時表示每 n 分鍾個時間間隔執行一次,t2 為 */n 表示每 n 小時個時間間隔執行一次,其餘類推
  • 當 t1 為 a, b, c,... 時表示第 a, b, c,... 分鍾要執行,t2 為 a, b, c,... 時表示第 a, b, c...個小時要執行,其餘類推

2. Tomcat日志清理腳本

  Tomcat日志隨着項目運行時長越來越多,訪問量大時很可能撐滿硬盤。下面貼一個自用的Tomcat日志清理腳本。

 1 #!/bin/sh
 2 
 3 #日志文件所在目錄
 4 #path=/usr/local/tomcat/apache-tomcat-8.5.32/logs
 5 path=/usr/local/tomcat/apache-tomcat-8.5.32/logs
 6 
 7 cd ${path}
 8 
 9 #catalina.out日志備份
10 #獲取前7天的日期
11 bak_date=`date +%Y-%m-%d -d "7 days ago"`
12 #備份catalina.out日志,后面添加日期
13 #cp catalina.out catalina.out.${bak_date}.log
14 #清空catalina.out日志文件
15 echo > catalina.out
16 
17 #7天之前的日志文件刪除
18 #獲取7天之前的日期
19 del_date=`date +%Y-%m-%d -d "7 days ago"`
20 #獲取文件名中的日期字符串,然后對此時間進行相應的操作,localhost_access_log的后綴名一般為txt文件,這里包括txt文件
21 for n in `ls *.log *.txt -1`;do
22     m=`echo $n | awk -F. '{print $(NF-1)}'`
23     m=`echo ${m:0-10}`
24     if [ ! $m ]; then
25         echo "IS NULL"
26         continue
27     fi
28     if [[ $m < $del_date || $m = $del_date ]];then
29         echo file $n will be deleted.
30         rm -rf $n
31     fi
32 done
Tomcat清理腳本

3.  Nginx日志切割,清理腳本

  Nginx不同Tomcat日志,不會定時切割日志,所有的日志都會放在access.log和error.log中。在排除問題時,會很不方便。下面貼一個自用的Nginx日志切割清理腳本。

 1 #!/bin/bash
 2 
 3 #nginx的錯誤日志備份
 4 cp /usr/local/nginx/logs/error.log /usr/local/nginx/logs/error-$(date -d "yesterday" +"%Y-%m-%d").log
 5 cat /dev/null > /usr/local/nginx/logs/error.log
 6 
 7 #將nginx的訪問日志備份
 8 cp /usr/local/nginx/logs/access.log /usr/local/nginx/logs/access-$(date -d "yesterday" +"%Y-%m-%d").log
 9 cat /dev/null > /usr/local/nginx/logs/access.log
10 
11 #清楚3天前的日志備份文件
12 find /usr/local/nginx/logs/ -mtime +3 -type f -name \*.log | xargs rm -f
Nginx切割,清理日志

4.   Crontab定時任務編寫

  Crontab語法詳細介紹請參考百度--

#進入crontab編寫界面
crontab -e

#編寫crontab執行語句,此處以nginx清理腳本為例
#/home/crontab/clean_nginx_log.sh是我腳本位置,替換下即可
1 0 * * * /bin/sh /home/crontab/clean_nginx_logs.sh >> /opt/cut_nginx_log.log 2>&1

#保存退出,啟動
:wq
service crond start
Crontab編寫

 


免責聲明!

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



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