nohup 日志为空,通常不是 nohup 本身的问题,而是输出缓冲、重定向方式或程序行为导致的。下面按常见原因逐一说明:
很多程序(尤其是 Python、C/C++ 程序)在非终端环境下会使用全缓冲而不是行缓冲。
例如:
nohup python app.py > log.txt 2>&1 &
log.txt 一直是空的Python 示例:
nohup python -u app.py > log.txt 2>&1 &
-u 表示不缓冲
C / C++:
fflush(stdout)setvbuf(stdout, NULL, _IONBF, 0)有些程序会:
✅ 检查:
lsof -p <pid> | grep log
常见错误:
nohup python app.py 2>&1 > log.txt &
❌ 顺序错了,stderr 不会进 log.txt
✅ 正确写法:
nohup python app.py > log.txt 2>&1 &
✅ 确认程序是否在运行:
ps -ef | grep app.py
检查是否不小心写了:
nohup xxx > /dev/null 2>&1 &
如果你这样运行:
nohup python app.py &
日志在:
nohup.out
如果你又指定了:
nohup python app.py > log.txt &
那就不会写 nohup.out
✅ 检查:
ls -l log.txt
touch log.txt
> log 2>&1?如果你愿意,可以把:
贴出来,我可以帮你精准定位 ✅