nohup 命令默认会把输出写入 nohup.out(或你重定向到的日志文件),时间久了会很大。压缩日志一般分 “直接压缩” 和 “滚动压缩(推荐)” 两种方式。
适合临时处理:
# 先停掉程序(或确认不再写入)
gzip nohup.out
# 生成 nohup.out.gz
⚠️ 注意:
nohup.outlogrotate(最推荐 ✅)系统自带工具,自动压缩、切割、清理。
新建文件:
sudo vi /etc/logrotate.d/myapp
内容示例:
/path/to/nohup.out {
daily
rotate 7
compress
delaycompress
missingok
notifempty
copytruncate
}
说明:
daily:每天切rotate 7:保留 7 份compress:压缩copytruncate:不重启程序也能截断日志 ✅手动测试:
logrotate -d /etc/logrotate.d/myapp # 模拟
logrotate -f /etc/logrotate.d/myapp # 强制执行
nohup java -jar app.jar >> app_$(date +%F).log 2>&1 &
split 切割nohup java -jar app.jar | split -b 100m - app.log.
最安全做法:
cp nohup.out nohup.out.bak
> nohup.out
gzip nohup.out.bak
如果你愿意,可以告诉我:
我可以帮你写一套可直接用的方案。