“nohup 日志丢失”通常指使用 nohup command > logfile 2>&1 & 运行程序后,日志文件被误删、被覆盖、或进程仍在运行但日志内容不见了。能否恢复,取决于日志文件是否还在被进程占用。
下面按常见场景说明处理与恢复方法。
ls logfile 提示不存在ps 看进程还在df 显示磁盘空间没释放Linux 中,文件被删除但仍有进程打开它时:
lsof | grep deleted
或针对某进程:
lsof -p <PID>
你会看到类似:
command 12345 user 1w REG 8,1 1048576 /home/user/logfile (deleted)
cp /proc/<PID>/fd/1 ./recovered_log.log
或
cat /proc/<PID>/fd/1 > recovered_log.log
✅ 这是最可靠的恢复方式
nohup cmd > log 2>&1 &
nohup cmd > log 2>&1 & # 第二次覆盖
❌ 基本无法恢复
>> 追加nohup cmd >> log_$(date +%Y%m%d).log 2>&1 &
extundelete(ext3/ext4)testdisk / photorec⚠️ 生产环境不建议在此阶段依赖恢复
nohup cmd >> app.log 2>&1 &
使用 logrotate 或:
nohup cmd | rotatelogs app_%Y%m%d.log 86400 &
systemdsupervisorpm2(Node)screen / tmux| 情况 | 能否恢复 |
|---|---|
| 进程在 + 文件被删 | ✅ 高概率 |
| 进程在 + 文件被覆盖 | ❌ 不能 |
| 进程退出 + 文件删 | ❌ 很难 |
用了 >> |
✅ 正常 |
如果你愿意,可以告诉我:
我可以给你精确的恢复命令。