在 Linux 系统中,日志文件是排查问题、监控系统运行状态的重要工具。但如果不加控制,日志文件会不断增长,最终可能占满磁盘空间。为了解决这个问题,我们可以使用 Linux Shell 循环日志记录 技术,实现日志的自动轮转(Log Rotation)。
日志轮转(Log Rotation) 是指定期将当前日志文件重命名或归档,并创建一个新的日志文件继续写入。这样可以防止单个日志文件过大,同时保留历史日志用于后续分析。
Linux 系统通常自带 logrotate 工具,它是处理日志轮转的标准方案。但如果你希望用 Shell 脚本自己实现一个简单的轮转机制,下面的方法非常适合初学者。
下面我们编写一个简单的 Shell 脚本,实现最多保留 5 个历史日志文件(例如:app.log.1, app.log.2, ..., app.log.5),当新日志生成时,旧日志依次“后退”一位,最老的日志被删除。
mkdir -p /var/log/myapptouch /var/log/myapp/app.log #!/bin/bashLOG_FILE="/var/log/myapp/app.log"MAX_VERSIONS=5# 删除最旧的日志(如果存在)if [ -f "${LOG_FILE}.${MAX_VERSIONS}" ]; then rm -f "${LOG_FILE}.${MAX_VERSIONS}"fi# 将旧版本依次后移for ((i=MAX_VERSIONS-1; i>=1; i--)); do if [ -f "${LOG_FILE}.${i}" ]; then mv "${LOG_FILE}.${i}" "${LOG_FILE}.$((i+1))" fidone# 将当前日志重命名为 .1if [ -f "${LOG_FILE}" ]; then mv "${LOG_FILE}" "${LOG_FILE}.1"fi# 创建新的空日志文件touch "${LOG_FILE}"# 可选:设置权限chmod 644 "${LOG_FILE}" chmod +x rotate_log.sh./rotate_log.sh 运行后,你会发现 /var/log/myapp/ 目录下多了一个 app.log.1 文件,而 app.log 是一个新创建的空文件。
为了让日志自动轮转,我们可以使用 cron 定时任务每天凌晨执行一次:
# 编辑当前用户的 crontab crontab -e# 添加以下行(每天 00:30 执行)30 0 * * * /path/to/rotate_log.sh 掌握 Shell脚本日志管理 和 自动日志轮转 技巧,不仅能避免磁盘爆满,还能提升系统稳定性。对于运维新手来说,这是非常实用的基础技能。
logrotate,它更稳定且功能强大。通过本教程,你已经掌握了基本的 Linux日志记录技巧!现在你可以自信地管理自己的日志文件了。
本文由主机测评网于2025-12-01发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025121788.html