“nohup 日志丢失”通常指的是用 nohup command > logfile 2>&1 & 启动的程序,日志文件没了、被截断、被覆盖或内容看不到。能否找回,取决于日志是怎么丢的。下面按常见场景说明:
如果你删除了 log 文件,但程序没停,Linux 里文件其实还在,只是目录项没了。
lsof | grep deleted
或
lsof +L1
找到类似:
java 12345 user 1w REG ... /home/user/nohup.out (deleted)
假设 PID 是 12345,文件描述符是 1:
cp /proc/12345/fd/1 recovered.log
✅ 这是最有可能完整找回日志的方式
> logfile 覆盖(重定向清空)例如你又执行了:
nohup xxx > nohup.out 2>&1 &
原内容被清空。
lsof 试logrotate 截断或轮转常见配置会:
ls -lh nohup.out*
可能有:
nohup.out.1
nohup.out.1.gz
如果是 .gz:
zcat nohup.out.1.gz
有些程序:
ls -l /proc/<pid>/fd
看真正的输出去哪了。
日志“看起来丢了”,其实没写。
df -h
ls -l logfile
nohup command >> app.log 2>&1 &
(用 >> 追加,不用 >)
/var/log/app.log {
daily
rotate 7
compress
copytruncate
}
进程还在 + 文件被删 = 大概率能找回(
/proc/PID/fd)
已覆盖 / 磁盘损坏 = 基本找不回
如果你愿意,可以告诉我:
我可以给你更精确的命令。