在 Debian 上用 nohup 却“看不到日志”,通常不是 nohup 本身有问题,而是输出去哪儿了 / 程序怎么写日志 / 你怎么看的这三件事没对上。下面按最常见原因逐一说明。
nohup 默认只重定向到 nohup.outnohup command 等价于:
nohup command >> nohup.out 2>&1
但要注意:
nohup.out 是在当前工作目录生成的cd 走了,或者用了 systemd / cron / service,就找不到✅ 检查方式:
ls -l nohup.out
pwd
如果你是用:
nohup ./app &
然后关了终端,再:cat nohup.out 没内容,那可能是:
常见错误写法:
nohup python app.py > log.txt &
但:
log.txt 在你执行命令时的目录/root 启动,却在 /home 找,当然没有✅ 建议写绝对路径:
nohup python app.py > /var/log/app.log 2>&1 &
尤其是:
nohup python app.py &
print() 是行缓冲,但:
✅ 解决:
nohup python -u app.py > app.log 2>&1 &
或代码里:
print("xxx", flush=True)
很多服务:
logging 写到文件syslogsystemd journal那你用 nohup.out 当然空的
✅ 检查:
ps aux | grep app
lsof -p <pid>
看它打开了哪些文件
如果你是通过:
crontabsystemctlservice启动的,那:
nohup 基本无效journalctl 或 syslogjournalctl -u your-service
nohup xxx &
echo $?
或者:
jobs
ps aux | grep xxx
如果进程根本没起来,自然没日志
nohup /绝对路径/程序 \
> /var/log/app.log 2>&1 &
或 Python:
nohup python3 -u app.py \
>> /var/log/app.log 2>&1 &
Debian 上 nohup “没日志”,90% 是:路径不对、输出被缓冲、或程序根本不写 stdout。
如果你愿意,可以把:
贴出来,我可以直接帮你定位是哪一类问题。