日志清理脚本

newalanhost:[/home/newalan/bin]crontab -l 
0 2 * * * /home/newalan/bin/cleanlog.sh 

用crontab来定时调这个脚本,以上设置每日的凌晨2点0分执行 

newalanhost:[/home/newalan/bin]cat /home/newalan/bin/cleanlog.sh 
#!/bin/sh 

#find $HOME/log -mtime +3 -type f  -exec rm -rf {} \; 

rm -rf $HOME/log/.tmpblog/* 

#把2天之外的日志del 
cd $HOME/log 
for i in `ls -lr|grep ^d|awk '{print $9}'|grep ^2[0-9][0-9][0-9][0-9][0-9][0-9][0-9]$|sed '1,2d'` 
do 
 rm -rf $i 
done 

举例来说 
newalanhost:[/home/newalan/log]ls -al 
drwxrwxrwx    2 newalan     cics           4096 Jun 21 08:56 .tmpblog 
drwxrwxrwx    2 newalan     cics           4096 Jun 20 15:34 20180620 
drwxrwxrwx    2 newalan     cics           4096 Jun 21 08:27 20180621 
-rw-r--r--    1 newalan     cics            904 Jun 14 13:52 ARECFG.log.14 
-rw-r--r--    1 newalan     cics      985822658 Jun 21 08:56 sbl.log 

该目录/home/newalan/log是日志目录,不过有一些创建规则
其中红色的以日期命名的目录(
2018062020180621)每天创建一个,记录当天发生的交易的日志 
    紫色的的目录(.tmpblog)是隐藏目录,记录交易的中间临时信息,只有交易错误时才记录,一般不用看 
    日志文件夹下的其他蓝色文件(ARECFG.log.14 sbl.log)有些是公共的操作记录的日志,或者是不规范的日志,本来应该记录在红色的以日期命令的目录里 
这三种日志的清理对应脚本中的三种颜色 
一般  find $HOME/log -mtime +3 -type f  -exec rm -rf {} \;  可以清理大部分日志(语句中设定超过3天前的日志) 
不过这个语句对于红色的以日期命令的目录,只会删除目录中的文件,不删除目录,导致会遗留很多内空的日期命名的目录,因此这种方式被废弃了,但如果你的日志目录里 
不存在以日期命名的目录,这个命令还是很好用的。 

我们代替的方式是用下面的紫色命令和红色命令,紫色很简单,删除隐藏目录(.tmpblog)下的文件, 
红色的命令的逻辑是,在该目录下按时间逆序(ls -lr)排列的目录(grep ^d,目录名位于第九列$9)中,搜索日期命名的文件夹,并去掉最新的两个(1,2d),即实现了保留最近的 
两天的日志,其他的全部删除。

猜你喜欢

转载自www.cnblogs.com/newalan/p/9299729.html
今日推荐