温馨提示×

nohup日志太大如何清理

小樊
37
2026-09-27 16:25:17
栏目: 编程语言

nohup 命令默认会把输出写入 nohup.out,长时间运行后日志文件很容易变得非常大。下面按安全程度和可操作性给你几种常见清理方式。


一、最推荐:日志轮转(根本解决办法)

1️⃣ 使用 logrotate(生产环境首选)

如果你是用 nohup 启动的服务,建议配置 logrotate:

示例(/etc/logrotate.d/myapp):

/path/to/nohup.out {
    size 100M
    rotate 5
    copytruncate
    compress
    missingok
    notifempty
}

关键点:

  • copytruncate:不中断程序就截断日志(非常适合 nohup)
  • size 100M:超过 100M 就轮转

二、手动清理(不重启程序)

2️⃣ 使用 truncate 清空日志(推荐)

truncate -s 0 nohup.out

✅ 不会删除文件
✅ 程序继续写,不报错
✅ 最安全


3️⃣ cat /dev/null 方式

cat /dev/null > nohup.out

效果和 truncate 类似,但 truncate 更清晰。


三、不推荐但可用

4️⃣ 直接 rm nohup.out(❌ 有风险)

rm nohup.out

⚠️ 问题:

  • 程序仍持有文件句柄
  • 磁盘空间不会立刻释放
  • 需要重启程序才真正释放

四、启动时就避免日志爆炸(治本)

5️⃣ 启动时不写 nohup.out

nohup your_command > app.log 2>&1 &

或只保留错误:

nohup your_command > /dev/null 2>&1 &

6️⃣ 配合日志级别控制

很多程序支持:

your_command --log-level=warn

五、快速选择建议

场景 推荐方式
线上运行中 truncate -s 0 nohup.out
长期运行服务 logrotate
临时脚本 启动重定向日志
日志无意义 /dev/null

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

  • 是什么程序(Java / Python / Shell)
  • 是否在服务器长期运行
  • 是否允许重启

我可以帮你写一套最合适的日志方案。

0 踩