温馨提示×

centos nohup日志怎么找回

小樊
43
2026-09-21 11:17:47
栏目: 智能运维

在 CentOS 下用 nohup 启动程序时,默认会把输出重定向到当前目录的 nohup.out 文件。如果你“找不到了”,可以按下面几种情况排查和恢复。


一、最常见:nohup.out 还在,只是不知道在哪

1️⃣ 先找 nohup.out

find / -name nohup.out 2>/dev/null

或只在常见目录找:

find ~ -name nohup.out
find /opt /home /usr/local -name nohup.out

2️⃣ 看进程当前工作目录

ps -ef | grep 你的程序名

假设 PID 是 12345:

ls -l /proc/12345/cwd

这就是 nohup.out 可能存在的目录。


二、如果你启动时手动重定向过日志

比如你曾经执行过:

nohup xxx > app.log 2>&1 &

那就找这个文件:

find / -name app.log 2>/dev/null

三、nohup.out 被删除了,但程序还在运行(重点)

即使文件被 rm 删了,只要进程没退出,日志还能找回!

✅ 方法 1:从 /proc 恢复(推荐)

ls -l /proc/进程PID/fd/

你会看到类似:

1 -> /root/nohup.out (deleted)

直接拷贝:

cp /proc/进程PID/fd/1 /root/nohup_back.log

⚠️ 不要重启进程,否则日志永久丢失


四、日志被 logrotate 或清空了

如果你执行过:

> nohup.out

或 logrotate 处理了它:

✅ 已写入内容无法恢复
✅ 但未来日志还会继续写(文件 inode 不变)


五、防止以后再丢日志(建议)

✅ 明确指定日志路径

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

✅ 用 logrotate 管理

/var/log/app.log {
    size 100M
    rotate 5
    compress
    copytruncate
}

六、快速自查清单

  • [ ] find / -name nohup.out
  • [ ] ls -l /proc/PID/cwd
  • [ ] ls -l /proc/PID/fd
  • [ ] 是否 rm 过但进程还在
  • [ ] 是否重定向到了别的文件

如果你愿意,可以把:

  • 启动命令
  • ps -ef | grep 程序
  • ls -l /proc/PID/fd

发出来,我可以帮你精确判断能不能找回。

0 踩