跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

Linux日志怎么切割_Linux日志利用logrotate按系统启动切割的实用方法

通过创建systemd服务实现系统启动时自动切割日志。1. 创建logrotate-boot.service文件,设置在local-fs.target后执行logrotate -f /etc/logrotate.conf;2. 启用该服务使每次启动运行一次logrotate;3. 配置/etc/logrotate.d/myapp等策略文件,使用copytruncate等方式处理无法重载的服务;4. 重启验证日志是否被成功切割,并检查journalctl日志记录。此方法将logrotate从时间驱动扩展为事件驱动,适用于排查启动问题,但需注意copytruncate的丢日志风险及合理组合时间或大小条件避免频繁切割。 Linux系统中,日志文件会随着时间不断增长,影响系统性能和磁盘使用。logrotate是Linux自带的日志管理工具,通常按天、周或大小进行切割,但有时我们希望在系统每次启动时也触发日志切割——比如调试开机服务或排查启动问题。下面介绍如何配置logrotate实现按系统启动自动切割日志。 理解logrotate的启动机制 logrotate默认由cron定时执行,一般每天运行一次。它本身不直接支持“按启动切割”,但我们可以通过init系统(如systemd)在每次系统启动时主动调用logrotate,达到按启动切割的目的。 核心思路是:在系统启动完成后,立即执行一次logrotate,确保本次启动前的日志被归档,新启动产生的日志写入新的文件。 创建启动时执行的logrotate服务 以systemd为例,创建一个unit文件,在系统启动后运行logrotate: 1. 创建systemd service文件: /etc/systemd/system/logrotate-boot.service
[Unit] Description=Logrotate on boot After=local-fs.target

[Service] Type=oneshot ExecStart=/usr/sbin/logrotate -f /etc/logrotate.conf RemainAfterExit=yes

[Install] WantedBy=multi-user.target

2. 启用该服务: 运行以下命令启用开机执行:
sudo systemctl daemon-reexec sudo systemctl enable logrotate-boot.service
这样每次系统启动时,logrotate都会强制执行一次 配置文件 中的规则,完成日志切割。 Midjourney AI 提示词工具 PHP中文网提供Midjourney AI 提示词在线生成工具,专为解决 AI 绘画“词穷”痛点而生,用户只需输入“一只猫”等简单想法,工具便能利用 AI 智能扩展出包含艺术风格、光影构图、镜头参数及负面提示词的专业级英文 Prompt。它完美兼容 Midjourney V8.1 及 Niji 模型,支持一键复制与参数自动优化,大幅降低创作门槛,是提升出图质量与效率的必备辅助神器。 下载 配置日志文件的切割策略 编辑对应日志的logrotate配置,例如为自定义应用日志设置启动级切割: /etc/logrotate.d/myapp
/var/log/myapp.log { missingok notifempty copytruncate daily rotate 7 compress postrotate /bin/kill -USR1 `cat /var/run/syslogd.pid 2>/dev/null` 2>/dev/null || true endscript }
说明: copytruncate :适用于无法重载的服务,先复制日志再清空原文件,避免进程写入中断。 daily :配合定时任务保留每日策略。 加上启动时执行,相当于“每次启动都可能切割一次”。 验证与注意事项 重启系统后,检查日志文件是否被成功切割:
ls /var/log/myapp.log*
查看logrotate日志(通常在/var/lib/logrotate/status 或通过journalctl)确认执行记录:
sudo journalctl -u logrotate-boot.service
注意: 避免频繁重复切割,建议结合时间或大小条件使用。 某些服务支持SIGHUP或USR1信号重载日志,优先使用
create
+ 信号方式。 copytruncate虽方便,但在高并发写入时有丢日志风险。 基本上就这些。通过systemd服务触发logrotate,可以轻松实现“按系统启动”切割日志的需求,特别适合用于诊断启动过程中的服务行为。关键是把logrotate从纯时间驱动扩展到事件驱动,提升日志管理灵活性。

相关文章