ITPub博客

首页 > 数据库 > 数据库开发技术 > 日志文件清理脚本,可用于大批量机器

日志文件清理脚本,可用于大批量机器

原创 数据库开发技术 作者:运维book思议 时间:2023-04-03 11:44:59 0 删除 编辑

先放个链接,万一有人关注呢

优质文章推荐

↓ ↓ ↓ ↓ ↓

Linux系统初始化脚本

能够监控100台服务器的磁盘利用率的脚本——16行代码实现

Linux系统初始化脚本之二

Linux系统巡检脚本——快速获取当前系统信息

Linux远程执行脚本——Python运维脚本

哪个Linux发行版会成为CentOS的平替?

场景描述:

在一个企业级Linux服务器集群中,存在大量的日志文件需要进行定期清理,以释放磁盘空间,保证系统的正常运行。由于服务器数量众多,手动清理工作量巨大,因此需要编写一个自动化脚本来实现日志清理的任务。同时,由于日志文件可能被其他应用程序占用,需要在清理之前判断日志文件是否处于使用状态,以避免数据丢失和应用程序崩溃。

解决方案:

我们可以编写一个shell脚本来实现自动化日志清理的任务,具体步骤如下:

首先,获取需要清理的日志文件路径和保留时间。可以通过配置文件或命令行参数来指定。

然后,检查每个日志文件是否处于使用状态。如果正在使用,则跳过该文件,否则进行下一步操作。

接下来,判断日志文件是否过期,如果过期则将其删除。

最后,输出日志信息,记录已清理的文件数和已跳过的文件数。

项目实施:

上代码!

#!/bin/bash
# 获取需要清理的日志文件路径和保留时间log_path="/var/log"keep_days=30
# 记录已清理和已跳过的文件数cleaned=0skipped=0
# 检查日志文件是否处于使用状态function check_log_status() { lsof "$1" > /dev/null return $?}
# 删除过期的日志文件function clean_log_file() { if [ -f "$1" ] && [ ! -L "$1" ] && [ ! "$(basename "$1")" == "*.log" ]; then if check_log_status "$1"; then echo "File $1 is in use, skip cleaning." ((skipped++)) elif [ $(find "$1" -type f -mtime +"$keep_days" | wc -l) -gt 0 ]; then echo "Cleaning file: $1" rm "$1" ((cleaned++)) else echo "File $1 is not expired, skip cleaning." ((skipped++)) fi fi}
# 遍历日志目录,清理日志文件for logfile in $(find "$log_path" -type f); do clean_log_file "$logfile"done
# 输出日志信息echo "Cleaned $cleaned files, skipped $skipped files."
该脚本首先获取需要清理的日志文件路径和保留时间,然后遍历该路径下的所有文件,逐一判断其是否处于使用状态和是否过期,并进行相应的操作。最后输出已清理和已跳过的文件数,方便用户了解清理效果。
结束!

如有不足之处,欢迎指正!

谢谢你这么好看还关注我


原文作者:运维book思议;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2022-09-24

  • 博文量
    333
  • 访问量
    215236