Linux 自动删除日志文件(N天或特定日期)
March 22, 2018
本文将会讲述如何在Linux系统下自动删除特定日期或者N天系统生成的日志文件或者归档文件或者特定某类文件。
Linux系统和windows系统一样,在系统的运行过程中,会不断的产生日志文件或者日志归档文件,或者其它不同类型的日志文件。随着日志的不断输出到文件里,文件的大小也会越来越大,这样该日志文件就会占据越来多的磁盘空间,而且有可能会将可用存储空间全部占用,这样就有可能导致你的机器越来越慢,相应的服务也会停止。为了防止日志文件变大后,导致的系统不能正常访问,我们需要定期的清理或者删除这些日志文件。
查看Linux系统日志文件
对于Linux 下APACHE服务器里,系统会产生访问时的日志文件,错误访问日志文件,MySQL数据库服务也会产生相应的日志文件, 大多数Linux系统的默认系统日志文件都会放在/var/log/目录下,通过下执行下面的命令来查看Linux系统的日志文件:
#ls /var/log/*
命令输出如下:
root@devops:~# ls /var/log/* alternatives.log bootstrap.log gpu-manager.log syslog.2.gz alternatives.log.1 btmp installer syslog.3.gz ......
Linux系统下自动删除日志文件的方法
首先我们要查找到你要删除的N天生成日志文件,之后再通过Linux rm命令删除日志文件。 之前我们已经介绍过Linux如何根据文件日期删除文件的方法,所以我们现在只需要在该方法的基础上,实现如何自动删除就可以了。我们可通过Linux下的定时任务命令crontab来实现特定日期日志文件的自动删除。
实例:Linux 下自动删除5天前更改或生成的系统日志文件,参照下面的几个步骤,
1# 确定删除特定日期的日志文件的命令,可以使用下面的命令
find /var/log/ -mtime +5 -name message* -exec rm -rf {} \;
该命令解释如下:
find 是Linux下的查找文件命令 /var/log/ 是指定要查找的文件路径 -mtime 是find 命令下参数,用来指定find命令要根据文件的更改日期来进行查找 +5 是指查找五天前生成或更改过的所有文件(如果是-5, 是指查找五天内生成或更改过的文件) -name 是指定要查找的文件的模式匹配 -exec 是指当find查找到文件后,要执行的动作。比如删除操作 rm -rf 是指要删除查找到的文件
2# 创建shell脚本文件,将上面的命令加入到脚本里,方便以后调用
执行下面命令:
#vi autoDeleteLog.sh
输入下面的脚本内容:
#!/bin/bash find /var/log/ -mtime +5 -name message* -exec rm -rf {} \;
保存退出。
3# 为脚本文件增加可执行权限
执行下面命令:
#chmod u+x autoDeleteLog.sh
4# 定制计划任务,自动执行autoDeleteLog.sh 脚本
执行命令:
#crontab -e
输入下面的内容:
00 02 * * * /root/autoDeleteLog.sh >/dev/null 2>&1
这样在每天的凌晨2点钟的时候,系统会自动执行日志删除脚本对过期的日志文件进行删除操作。
4# 查看定制的计划任务
执行命令如下:
#crontab -l
如果要自动删除特定目录下特定日期的归档文件,只需要将第二步中删除日志文件的命令换成下面的命令:
find /var/log/ -mtime +5 -name *.tgz -exec rm -rf {} \;
如果需要自动删除特定日期的Nginx服务器的日志文件,可以执行下面的脚本,并按照上面的方法,将其通过crontab命令加到系统的计划任务里即可。
#!/bin/bash find /usr/local/nginx/logs -mtime +5 -type f -name *.log | xargs rm -f
0 Comments