温馨提示×

centos如何清理nohup日志

小樊
45
2026-09-15 08:01:03
栏目: 智能运维

在 CentOS 下,使用 nohup 启动程序时通常会把输出重定向到 nohup.out 或自定义日志文件。清理这些日志有几种常见方式,取决于你是否需要保留日志内容。


一、最常用:清空日志文件(推荐)

不会删除文件,只是清空内容,程序可继续写入

> nohup.out

cat /dev/null > nohup.out

如果是自定义日志,例如 app.log

> app.log

✅ 优点:

  • 不影响正在运行的进程
  • 日志文件 inode 不变

二、使用 truncate 命令

truncate -s 0 nohup.out
  • -s 0 表示把文件大小截断为 0
  • 同样是安全方式

三、查找并清理所有 nohup.out

find / -name "nohup.out" -size +100M -exec truncate -s 0 {} \;

清理大于 100M 的 nohup.out


四、如果进程已停止(可直接删除)

rm -f nohup.out

⚠️ 注意:

  • 如果进程还在运行,不要直接 rm,否则日志会继续写到一个已删除的文件,磁盘空间不会释放

五、正确删除“正在写入”的日志(进阶)

如果已经 rm 了但磁盘没释放:

lsof | grep deleted

找到对应进程后:

  • 重启进程
  • 或清空文件

六、建议:以后避免 nohup.out 膨胀

1️⃣ 启动时就限制日志

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

2️⃣ 使用 logrotate(生产推荐)

示例 /etc/logrotate.d/app

/opt/app/app.log {
    size 100M
    rotate 5
    compress
    missingok
    notifempty
    copytruncate
}

copytruncate 可避免重启进程。


总结(最安全做法)

清空不删除

> nohup.out

truncate -s 0 nohup.out

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

  • 日志路径
  • 是否进程还在运行
  • 是否 CentOS 6 / 7 / 8

我可以给你更精确的命令。

0