在 Linux 服务器上,nohup 命令通常会把输出写入 nohup.out 日志文件,长时间运行后这个文件可能变得很大。下面是压缩 nohup 日志文件的常见做法,以及不影响程序运行的安全方式。
如果程序已经结束,可以直接压缩:
gzip nohup.out
生成:
nohup.out.gz
或指定名字:
gzip -c nohup.out > nohup.out.20260121.gz
rm nohup.out
⚠️ 不要直接删除或 mv nohup.out,否则程序可能继续写已经被删掉的 inode,导致磁盘不释放。
: > nohup.out
或
cat /dev/null > nohup.out
cp nohup.out nohup.out.bak
gzip nohup.out.bak
logrotate(最推荐)示例 /etc/logrotate.d/myapp:
/path/to/nohup.out {
daily
rotate 7
compress
copytruncate
missingok
notifempty
}
copytruncate:拷贝后清空原文件,不影响进程cp nohup.out nohup.out.$(date +%Y%m%d)
gzip nohup.out.*
: > nohup.out
nohup java -jar app.jar > app.log 2>&1 &
nohup ./start.sh >> /var/log/app/app.log 2>&1 &
❌ rm nohup.out(程序还在写,磁盘不释放)
❌ mv nohup.out nohup.out.old(程序仍写旧 inode)
❌ 直接 gzip nohup.out(正在写入会损坏)
如果你愿意,可以告诉我:
我可以给你最合适的压缩方案。