温馨提示×

nohup日志丢失如何找回

小樊
42
2026-10-09 10:32:17
栏目: 编程语言

nohup 本身不会主动“删除”日志,所谓“日志丢失”通常是以下原因之一。先判断是哪一种,再决定能否找回。


一、常见原因 & 对应处理

1. 重定向文件被覆盖 / 误删

nohup xxx > out.log 2>&1 &
  • 如果后来执行了:
    > out.log
    
    或 rm out.log,日志就没了。
  • 能否找回:
    • ✅ 文件被 rm 但进程仍在运行 → 可以恢复
    • ❌ 文件被 > 清空 → 基本无法恢复

恢复方法(rm 但未退出进程)

ls -l /proc/<PID>/fd/

找到类似:

1 -> /path/out.log (deleted)

复制回来:

cp /proc/<PID>/fd/1 out.log.bak

2. 日志写到了别的文件

  • 你可能以为写在 nohup.out,实际重定向到了别处
nohup python app.py > run.log &

检查:

ls -l /proc/<PID>/fd/

3. nohup.out 没生成

原因:

  • 当前目录无写权限
  • 程序没输出
  • 被 2>/dev/null 吞了

检查:

df -h .
ls -la nohup.out

4. 程序崩溃 / 被 kill

  • 日志只记录到崩溃前
  • 没有后续内容

解决:

  • 加日志框架(logging)
  • 用 supervisor / systemd

二、推荐的正确写法(防止再丢)

nohup python app.py >> app.log 2>&1 &

或更好:

./app >> app_$(date +%F).log 2>&1 &

三、如果你现在“已经丢了”

请告诉我:

  1. 是否进程还在运行?
  2. 是 rm 还是被清空?
  3. 用的什么命令启动的?

我可以一步一步帮你确认是否还能找回。

0 踩