首页 > 运维 > linux运维 > 正文

Linux日志怎么切割_Linux日志通过自定义脚本按内存使用切割的教程

蓮花仙者
发布: 2025-11-10 14:51:04
原创
868人浏览过
答案:通过Shell脚本监控内存使用率,超过阈值时切割日志。脚本检查内存 usage,若超设定值且日志存在,则移动归档并记录操作,结合cron定期执行,需注意权限、服务兼容性及保留策略。

linux日志怎么切割_linux日志通过自定义脚本按内存使用切割的教程

Linux系统中日志文件会随着时间不断增长,占用大量磁盘空间甚至影响系统性能。虽然logrotate是常用的日志切割工具,但有时需要根据特定条件(如内存使用率)进行自定义切割。下面介绍如何通过自定义Shell脚本实现按内存使用情况对日志进行切割。

监控内存使用并触发日志切割

核心思路是编写一个定时运行的Shell脚本,实时检查系统内存使用率,当超过设定阈值时,自动对指定日志文件进行切割归档。

以下是一个实用示例脚本:

#!/bin/bash
<h1>配置参数</h1><p>LOG_FILE="/var/log/app.log"
MAX_MEMORY_USAGE=80  # 内存使用率阈值(百分比)
ARCHIVE_DIR="/var/log/archive"
CURRENT<em>DATE=$(date +"%Y%m%d</em>%H%M%S")</p><h1>创建归档目录</h1><p>[ ! -d "$ARCHIVE_DIR" ] && mkdir -p "$ARCHIVE_DIR"</p><h1>获取当前内存使用率(去掉%符号)</h1><p>MEMORY_USAGE=$(free | grep Mem | awk '{print ($3/$2) * 100}' | cut -d. -f1)</p><h1>判断是否超过阈值且原日志文件存在且非空</h1><p>if [ $MEMORY_USAGE -gt $MAX_MEMORY_USAGE ] && [ -f "$LOG_FILE" ] && [ -s "$LOG_FILE" ]; then
mv "$LOG_FILE" "$ARCHIVE_DIR/app.log.$CURRENT_DATE"
echo "日志已切割: $LOG_FILE → $ARCHIVE_DIR/app.log.$CURRENT_DATE (内存使用: ${MEMORY_USAGE}%)"</p><h1>可选:发送通知或记录操作</h1><pre class='brush:php;toolbar:false;'>logger "Log rotated due to high memory usage: ${MEMORY_USAGE}%"
登录后复制

fi

通义视频
通义视频

通义万相AI视频生成工具

通义视频 70
查看详情 通义视频

将脚本加入定时任务

为了让脚本能周期性运行,需将其添加到crontab中。

编辑root用户的定时任务:

crontab -e
登录后复制

添加如下行(每5分钟检查一次):

*/5 * * * * /path/to/your/log_rotate_script.sh
登录后复制

确保脚本有可执行权限:

chmod +x /path/to/your/log_rotate_script.sh
登录后复制

注意事项与优化建议

实际部署时需考虑以下几个关键点:

  • 避免频繁切割:高内存可能持续存在,建议增加冷却机制(如记录上次切割时间)防止短时间内重复操作。
  • 保留策略:定期清理旧归档日志,可用find命令配合cron删除超过N天的日志:
    find /var/log/archive -name "app.log.*" -mtime +7 -delete
  • 日志重建:某些服务在日志被移走后不会自动创建新文件,可在脚本末尾追加touch "$LOG_FILE"或重启对应服务。
  • 权限问题:确保运行脚本的用户对日志文件和归档目录有读写权限。

基本上就这些。通过结合内存监控与条件判断,你可以灵活控制日志切割时机,尤其适用于资源敏感型环境。不复杂但容易忽略细节,比如磁盘空间、服务兼容性和异常处理。

以上就是Linux日志怎么切割_Linux日志通过自定义脚本按内存使用切割的教程的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号