在使用 nohup 运行程序时,日志通常会被重定向到一个文件,例如:
nohup python app.py > app.log 2>&1 &
随着时间推移,app.log 会越来越大。下面介绍几种常见的“分割 nohup 日志内容”的方法,从简单到规范。
# 按前 10000 行分割
split -l 10000 app.log app.log.part_
# 按大小分割(每 100M)
split -b 100M app.log app.log.part_
生成文件如:
app.log.part_aa
app.log.part_ab
grep "2026-01-21" app.log > app_20260121.log
logrotate 可以自动分割、压缩、清理 nohup 日志。
新建 /etc/logrotate.d/app:
/path/to/app.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
说明:
daily:每天分割rotate 7:保留 7 份compress:压缩旧日志copytruncate:复制后清空原文件(适合 nohup)✅ 关键点:
nohup程序不重启也能用copytruncate
0 0 * * * mv app.log app.log.$(date +%F) && touch app.log
注意:
kill -USR1)重新打开日志nohup 通常用 copytruncate 更安全logginglogback / log4j2zap / logrus支持:
nohup python app.py &
再用 systemd 或 supervisor 管理日志。
| 场景 | 推荐方式 |
|---|---|
| 临时分析 | split / grep |
| 生产服务器 | logrotate |
| 长期项目 | 日志框架 |
| 容器环境 | stdout + 日志驱动 |
如果你愿意,可以告诉我:
我可以直接给你可复制的配置或脚本。