在 Linux 下使用 nohup 运行的程序通常会把输出重定向到 nohup.out,时间久了文件会很大。下面介绍几种常见的 nohup 日志切割方案,从简单到专业。
split 按大小切割(简单)nohup your_command | split -b 100m - nohup_log_
nohup_log_aa, nohup_log_ab✅ 适合临时任务
tee + logrotate(不推荐复杂场景)logrotate(最推荐,生产环境)/opt/app/nohup.out
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:压缩旧日志logrotate -f /etc/logrotate.d/myapp
✅ 最适合 nohup 场景
cron + mv 简单切割(不推荐长期)0 0 * * * mv /opt/app/nohup.out /opt/app/nohup.out.$(date +%F)
⚠ 问题:
nohup 仍写旧 fdnohup your_command > /var/log/myapp/app.log 2>&1 &
再用 logrotate 管理 app.log
| 场景 | 推荐方案 |
|---|---|
| 临时任务 | split |
| 长期运行 | logrotate + copytruncate |
| 新项目 | 程序内置日志 |
如果你愿意,可以告诉我:
我可以直接帮你写配置。