Shell删除非今天的日志
- 原创
- |
- 浏览:395
- |
- 更新:
随着互联网的崛起,越来越多的公司都有自己的WEB服务,为能更好的排查问题,WEB服务也会随时进行记录日志。随着时间越来越长,将产生大量的日志文件。如何使使用简单快捷的命令删除日志文件呢?
方法/步骤
环境说明,小编的环境是Centos7。如下图所示:
说明需要删除的文件目录,小编需要删除“/usr/local/tomcat/logs/”目录下,非今天的日志文件。使用命令“ls -l /usr/local/tomcat/logs”,查看该目录下的文件。如下图所示:
今天的时间为“2020-08-07”。如下图所示:
使用命令“cd /root”命令回到root目录下。如下图所示:
使用vi或vim命令,创建del.sh文件。因小编习惯使用vim命令进行创建文件,便使用命令“vim del.sh”进行创建文件,如在使用该命令提示错误时,使用命令“vi del.sh”。如下图所示:
在打开的文件中按下键盘上的“I”键,进入到文件编辑模式,此时文件框左下角将出现“insert或插入”字样。如下图所示:
- 此文章未经授权抓取自百度经验
声明shell脚本解释器,在脚本中输入“#!/bin/bash”。如下图所示:
接着在文件中声明变量“today=`date +%Y-%m-%d`或today=`date +%F`”,两条命令作用相同,都是将今天日期格式化为年月日的显示方式。如“2020-08-07”。如下图所示
输入命令“for i in `ls /usr/local/tomcat/logs* | grep -v $today`; do rm -f /usr/local/tomcat/logs/$i; done;”。如下图所示:
输入完成后,按下键盘上的“Esc”键,退出编辑状态,并同时按下键盘上“Shift + :”输入冒号“:”,接着在冒号后输入wq后,按下键盘上的“Enter”键进行保存文件。如下图所示:
使用命令“sh del.sh”执行脚本,执行完毕后使用命令“ll /usr/local/tomcat/logs”查看我们需要删除目录下的文件。如下图所示:
如想删除非今天日志外,还想保留文件“catalina.out、adam_authchat.log、test_apartmet.log”;只需在do作用域范围内使用if进行条件过滤即可。命令如下:
if [[ "$i" == "catalina.out" || "$i" == "adam_authchat.log" || "$i" == "test_apartmet.log" ]]
then
continue
else
rm -f /usr/local/tomcat/logs/$i
fi
再次使用命令“sh del.sh”执行脚本,执行完毕后使用命令“ll /usr/local/tomcat/logs”查看我们需要删除目录下的文件。如下图所示:
以下是小编整个脚本的内容,如有需要或参考可复制后进行使用。命令如下:
#!/bin/bash
today=`date +%Y-%m-%d`
for i in `ls /usr/local/tomcat/logs* | grep -v $today`;
do
if [[ "$i" == "catalina.out" || "$i" == "adam_authchat.log" || "$i" == "test_apartmet.log" ]]
then
continue
else
rm -f /usr/local/tomcat/logs/$i
fi
done;
到此使用脚本删除非今天日志及条件删除日志就完成了,希望对你有所帮助!^V^
END
























