首页 > 数据库 > 数据库开发技术 > 日志文件清理脚本,可用于大批量机器
先放个链接,万一有人关注呢
↓ ↓ ↓ ↓ ↓
场景描述:
在一个企业级Linux服务器集群中,存在大量的日志文件需要进行定期清理,以释放磁盘空间,保证系统的正常运行。由于服务器数量众多,手动清理工作量巨大,因此需要编写一个自动化脚本来实现日志清理的任务。同时,由于日志文件可能被其他应用程序占用,需要在清理之前判断日志文件是否处于使用状态,以避免数据丢失和应用程序崩溃。
解决方案:
我们可以编写一个shell脚本来实现自动化日志清理的任务,具体步骤如下:
首先,获取需要清理的日志文件路径和保留时间。可以通过配置文件或命令行参数来指定。
然后,检查每个日志文件是否处于使用状态。如果正在使用,则跳过该文件,否则进行下一步操作。
接下来,判断日志文件是否过期,如果过期则将其删除。
最后,输出日志信息,记录已清理的文件数和已跳过的文件数。
项目实施:
上代码!
# 获取需要清理的日志文件路径和保留时间log_path="/var/log"keep_days=30# 记录已清理和已跳过的文件数cleaned=0skipped=0# 检查日志文件是否处于使用状态function check_log_status() {lsof "$1" > /dev/nullreturn $?}# 删除过期的日志文件function clean_log_file() {if [ -f "$1" ] && [ ! -L "$1" ] && [ ! "$(basename "$1")" == "*.log" ]; thenif check_log_status "$1"; thenecho "File $1 is in use, skip cleaning."((skipped++))elif [ $(find "$1" -type f -mtime +"$keep_days" | wc -l) -gt 0 ]; thenecho "Cleaning file: $1"rm "$1"((cleaned++))elseecho "File $1 is not expired, skip cleaning."((skipped++))fifi}# 遍历日志目录,清理日志文件for logfile in $(find "$log_path" -type f); doclean_log_file "$logfile"done# 输出日志信息echo "Cleaned $cleaned files, skipped $skipped files."
如有不足之处,欢迎指正!
谢谢你这么好看还关注我

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