温馨提示×

怎么压缩nohup日志文件

小樊
64
2026-09-09 12:38:52
栏目: 编程语言

在 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,导致磁盘不释放。

✅ 正确步骤(标准做法)

  1. 清空日志但保留文件(推荐)
: > nohup.out

或

cat /dev/null > nohup.out
  1. 先备份再压缩(可选)
cp nohup.out nohup.out.bak
gzip nohup.out.bak

三、滚动压缩(生产环境推荐)

方法 1:用 logrotate(最推荐)

示例 /etc/logrotate.d/myapp:

/path/to/nohup.out {
    daily
    rotate 7
    compress
    copytruncate
    missingok
    notifempty
}
  • copytruncate:拷贝后清空原文件,不影响进程
  • 自动压缩、保留历史

方法 2:手动滚动(不用工具)

cp nohup.out nohup.out.$(date +%Y%m%d)
gzip nohup.out.*
: > nohup.out

四、启动时就避免日志过大(最佳实践)

1. 重定向到带日期的日志

nohup java -jar app.jar > app.log 2>&1 &

2. 配合 logrotate

nohup ./start.sh >> /var/log/app/app.log 2>&1 &

五、常见错误 ❌

❌ rm nohup.out(程序还在写,磁盘不释放)
❌ mv nohup.out nohup.out.old(程序仍写旧 inode)
❌ 直接 gzip nohup.out(正在写入会损坏)


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

  • 用的什么程序(Java / Python / Shell)
  • 是否在容器里
  • 是否允许重启服务

我可以给你最合适的压缩方案。

0 踩