Linuxshell脚本 · 2022年11月2日 0

利用shell编程清理60天以前的老旧日志

在日常运维工作中,我们经常需要对服务器上的日志文件进行管理,以保证服务器的正常运行。其中,删除过期的日志文件和对一定时间内的日志文件进行压缩是必不可少的任务。本文将介绍如何使用shell脚本实现这一功能。

需求如下:
1. 找到/data/logs/目录下所有以log作为后缀的文件。
2. 删除掉60天以前的文件。
3. 对一天以前的文件使用gzip进行压缩。

首先,我们需要使用find命令来查找符合条件的文件。命令如下:

find /data/logs/ -name "*.log"

这个命令会在/data/logs/目录下查找所有以log作为后缀的文件。

接下来,我们需要对这些文件进行分类处理。对于60天以前的文件,我们可以使用find命令的-mtime选项来找到它们,并使用rm命令进行删除。命令如下:

find /data/logs/ -name "*.log" -mtime +60 -exec rm {} \;

这个命令会找到所有60天以前的日志文件,并使用rm命令将它们删除。

对于一天以前的文件,我们可以使用find命令的-mtime选项和-mmin选项来找到它们,并使用gzip命令进行压缩。命令如下:

find /data/logs/ -name "*.log" -mtime -1 -mmin +1 -exec gzip {} \;

这个命令会找到所有一天以前,但是一分钟以内没有被修改过的日志文件,并使用gzip命令进行压缩。

最后,我们可以将这些命令整合到一个shell脚本中,以便于管理。脚本如下:

#!/bin/bash

# 找到60天以前的日志文件,并删除
find /data/logs/ -name "*.log" -mtime +60 -exec rm {} \;

# 找到一天以前,但是一分钟以内没有被修改过的日志文件,并压缩
find /data/logs/ -name "*.log" -mtime -1 -mmin +1 -exec gzip {} \;

通过这个脚本,我们可以轻松地管理服务器上的日志文件,保证服务器的正常运行。