Windows和Linux下删除某天前日志文件的脚本
2018-08-03 本文已影响109人
靜默
无论是在windows下还是linux下,很多的日志文件如果不定时删除会充满硬盘,所以可以分别写个脚本定时处理一下,下面我来给大家介绍Linux与Windows中定时删除某天前日志文件脚本,但是做定时任务执行这个脚本,亮总系统中都很简单,自己百度即可找到。
一、Windows下bat文件内容如下;
1、代码如下:
@echo off
forfiles -p "D:\servers\apache2.2\logs" -s -m *.log -d -15 -c "cmd /c del @path"
forfiles -p "D:\servers\mysql\logs" -s -m *.log -d -15 -c "cmd /c del @path"
可以将上面的目录换成你想删除的指定的目录
*.log可以筛选一下文件格式
-d后面的参数为负数表示多少天之前的,正数是多少天之后的
最后保存成bat文件,然后在Windows计划任务里面设置每天执行的时间就可以了。
二、Linux下面的shell文件内容如下:
1、代码如下:
#!/bin/bash
# 删除30天之前的r日志文件
find /varlog/nginx/ -mtime +30 -type f -name \*.log | xargs rm -f
同样的将上面的目录换成自己指定的目录,后面的*.log表示文件扩展名,
-mtime后面的参数与上面Windows的相反,正数表示多少天之前的文件。
2、代码如下:
#!/bin/bash
# 删除30天之前的r日志文件
find /var/log/nginx/ -mtime +30 -name "*log*" -exec rm -f {} \;
说明:
将/opt/soft/log/目录下所有30天前带".log"的文件删除。具体参数说明如下:
find:linux的查找命令,用户查找指定条件的文件;
/opt/soft/log/:想要进行清理的任意目录;
-mtime:标准语句写法;
+30:查找30天前的文件,这里用数字代表天数;
".log":希望查找的数据类型,".jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件,这个可以灵活运用,举一反三;
-exec:固定写法;
rm -rf:强制删除文件,包括目录;
{} ; :固定写法,一对大括号+空格++;
3、保存指定后缀,添加权限,设置定时任务
将上面的内容保存成.sh,两个效果都是一样,任选其一,并使用chmod +x 添加可执行权限,然后放到crond定时任务中去执行即可。