在 Debian(以及大多数 Linux 发行版)里,nohup 本身并不是“日志系统”,它只是一个忽略 SIGHUP 信号的工具。很多人误以为 nohup 会自动“写日志”,其实不是。
下面把常见原因说清楚。
nohup 到底做了什么?nohup command &
nohup 只做两件事:
SIGHUP(终端关闭不掉进程)nohup.out⚠️ 注意:前提是“标准输出是终端”
常见写法:
nohup ./app > /dev/null 2>&1 &
这样:
/dev/null/dev/null✅ 当然不会有日志
很多程序:
syslognohup.out 只捕获:
stdoutstderr如果程序不用这两个,就不会有内容。
典型情况:
例如 Python:
print("hello")
在后台可能被缓冲,不立即写文件。
解决:
python -u app.py
或
stdbuf -oL nohup python app.py
nohup.out 一定在当前目录实际上:
$HOME/nohup.out检查:
ls -l nohup.out ~/
如果你是在 systemd 服务之外用 nohup,但程序本身被 systemd 管理,那:
journalctlnohup.outjournalctl -u your-service
nohup ./app > app.log 2>&1 &
nohup stdbuf -oL ./app >> app.log 2>&1 &
[Service]
ExecStart=/path/app
StandardOutput=append:/var/log/app.log
StandardError=append:/var/log/app.err
Debian 的
nohup不“写日志”,它只是“可能把终端输出存到 nohup.out”。
没有日志,通常是:被重定向了、程序没输出、被缓冲、或日志在别处。
如果你愿意,可以把你的**命令 + 程序类型(Python / Java / C / shell)**贴出来,我可以直接帮你定位为什么没日志。