温馨提示×

为什么nohup没写日志

小樊
36
2026-10-06 10:48:37
栏目: 编程语言

nohup 本身不是日志工具,它只是“忽略挂断信号(SIGHUP)”并默认把输出重定向到一个文件。如果你“没看到日志”,通常有以下几种常见原因:


1. 你没有重定向标准输出/错误

很多人这样写:

nohup python app.py &

这时:

  • 标准输出会写到 当前目录的 nohup.out
  • 如果当前目录不可写,可能写不进去

✅ 正确写法(推荐):

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

或

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

2. 程序根本没产生输出

即使你重定向了:

  • 程序没 print
  • 日志用的是 logging,但你没配置 handler
  • 输出被缓冲了(Python 常见)

✅ Python 防缓冲:

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

3. 你查错了地方

常见误区:

  • 以为日志在 /var/log
  • 实际上在:
    • 当前 shell 的工作目录
    • 或你指定的文件
ls -l nohup.out
ls -l app.log

4. 程序启动失败(你没发现)

例如:

  • 端口被占用
  • 依赖缺失
  • 权限不足

这些错误可能:

  • 写进 nohup.out
  • 或根本没起来

✅ 检查进程:

ps -ef | grep app.py

5. 用了 systemd / 容器 / 某种托管环境

如果你在:

  • Docker
  • systemd service
  • k8s

那 nohup 基本没用,日志由它们接管。


总结一句话

nohup 不保证有日志,它只是“不挂断 + 默认可能写 nohup.out”

✅ 最稳妥写法:

nohup your_command > run.log 2>&1 &

如果你愿意,可以把你的**完整命令 + 环境(Linux? Docker? Python?)**发出来,我可以直接帮你定位。

0 踩