温馨提示×

linux nohup日志怎么切割

小樊
39
2026-10-15 06:01:47
栏目: 智能运维

在 Linux 下使用 nohup 运行的程序通常会把输出重定向到 nohup.out,时间久了文件会很大。下面介绍几种常见的 nohup 日志切割方案,从简单到专业。


一、启动时就避免单文件过大(推荐)

1. 使用 split 按大小切割(简单)

nohup your_command | split -b 100m - nohup_log_
  • 每 100MB 生成一个文件
  • 文件如:nohup_log_aa, nohup_log_ab

✅ 适合临时任务


2. 用 tee + logrotate(不推荐复杂场景)


二、使用 logrotate(最推荐,生产环境)

示例:切割 nohup.out

1. 假设日志路径

/opt/app/nohup.out

2. 创建 logrotate 配置

sudo vim /etc/logrotate.d/myapp

内容:

/opt/app/nohup.out {
    daily
    rotate 7
    size 100M
    copytruncate
    missingok
    notifempty
    compress
}

参数说明

  • daily:每天
  • size 100M:超过 100M 才切
  • rotate 7:保留 7 份
  • copytruncate:关键,不重启进程
  • compress:压缩旧日志

3. 手动测试

logrotate -f /etc/logrotate.d/myapp

✅ 最适合 nohup 场景


三、用 cron + mv 简单切割(不推荐长期)

0 0 * * * mv /opt/app/nohup.out /opt/app/nohup.out.$(date +%F)

⚠ 问题:

  • nohup 仍写旧 fd
  • 需要重启程序

四、更好的做法(从根本上解决)

✅ 让程序自己写日志

nohup your_command > /var/log/myapp/app.log 2>&1 &

再用 logrotate 管理 app.log


五、总结建议

场景 推荐方案
临时任务 split
长期运行 logrotate + copytruncate
新项目 程序内置日志

如果你愿意,可以告诉我:

  • 用的什么命令
  • 日志路径
  • 是否可重启

我可以直接帮你写配置。

0 踩