天天看點

定時清理tomcat日志檔案

需求:最近公司伺服器發現磁盤經常會被占滿,查其原因是因為大量的日志檔案。所有需要每天定時去清理過期的日志檔案

一:編寫腳本

[html] view plain copy

  1. [root@localhost home]# vim clean_catalina.sh  

添加内容如下:

  1. # 删除 /opt/java/tomcat7/logs/下5天前,檔案名稱包含"201"的logs  
  2. find /opt/java/tomcat7/logs/ -mtime +5 -name "*201?*" -exec rm -rf {} \;  
  3. # 清空 /opt/java/tomcat7/logs/下的catalina.out  
  4. echo " " > /opt/java/tomcat7/logs/catalina.out  

二:設定定時執行clean_catalina.sh腳本

  1. [root@localhost home]# crontab -e  
  1. 10 0 * * * /home/clean_catalina.sh  

三:使用 crontab -l 指令檢視是否設定成功

  1. [root@localhost home]# crontab -l  

詳解 crontab 和 find 指令

=======

crontab

通過crontab可以設定程式的執行時間表,例如讓程式在每天的8點,或者每個星期一的10點執行一次。

crontab -l 列出時間表;

crontab -e編輯時間表;

crontab -d删除時間表;

“-l”沒什麼可說的,就是一個檢視而已;

“-e”是編輯,和vi沒什麼差别(其實就是用vi編輯一個特定檔案);

“-d”基本不用,因為它把該使用者所有的時間表都删除了,一般都是用“-e”編輯把不要了的時間表逐行删除;

那到底該如何編輯呢?

crontab檔案的格式是:M H D m d CMD。

一個6個字段,其中最後一個CMD就是所要執行的程式,如haha.sh。

M:分鐘(0-59)

H:小時(0-23)

D:日期(1-31)

m:月份(1-12)

d:一個星期中的某天(0-6,0代表周日)

這5個時間字段用空格隔開,其值可以是一個數字,也可以用逗号隔開的多個數字(或其他) ,如果不需設定,則預設為“*”。

例如,每天的8點5分執行haha.sh,就是“5 8 * * * /opt/./haha.sh”。

find

基本格式:find  path expression

1.按照檔案名查找

(1)find / -name httpd.conf  #在根目錄下查找檔案httpd.conf,表示在整個硬碟查找

(2)find /etc -name httpd.conf  #在/etc目錄下檔案httpd.conf

(3)find /etc -name '*srm*'  #使用通配符*(0或者任意多個)。表示在/etc目錄下查找檔案名中含有字元串‘srm’的檔案

(4)find . -name 'srm*'   #表示目前目錄下查找檔案名開頭是字元串‘srm’的檔案

2.按照檔案特征查找     

(1)find / -amin -10   # 查找在系統中最後10分鐘通路的檔案(access time)

(2)find / -atime -2   # 查找在系統中最後48小時通路的檔案

(3)find / -empty   # 查找在系統中為空的檔案或者檔案夾

(4)find / -group cat   # 查找在系統中屬于 group為cat的檔案

(5)find / -mmin -5   # 查找在系統中最後5分鐘裡修改過的檔案(modify time)

(6)find / -mtime -1   #查找在系統中最後24小時裡修改過的檔案

(7)find / -user fred   #查找在系統中屬于fred這個使用者的檔案

(8)find / -size +10000c  #查找出大于10000000位元組的檔案(c:位元組,w:雙字,k:KB,M:MB,G:GB)

(9)find / -size -1000k   #查找出小于1000KB的檔案

3.可以對查找到的檔案在進行操作

-exec command;

查找并執行指令

-fprint file

列印檔案完整檔案名

-fprintf file format

列印檔案格式

-ok command;

給使用者指令執行操作,根據使用者的Y 确認輸入執行

-ls

列印同種檔案格式的檔案.

例如:

find / -name "*xxx*" -ls 

查找根目錄下名稱包含xxx的檔案并顯示資訊

find /opt/java/tomcat7/logs/ -mtime +5 -name "*201?*" -exec rm -rf {} \;

查找出符合條件的日志檔案并删除

繼續閱讀