nohup 日志为空,通常不是 nohup 本身的问题,而是程序输出没有被写到日志文件里。下面按常见原因给你排查。
print / echo / printf✅ 验证:
echo "test" >> nohup.out
如果 nohup.out 里能看到,说明文件本身没问题。
你可能是这样运行的:
nohup ./app > other.log 2>&1
或者:
nohup ./app > /dev/null
✅ 检查:
ps -ef | grep 进程名
看是否有重定向。
很多程序(尤其是 Python、Java、C++)stdout 是行缓冲的,除非:
✅ Python 示例:
print("hello", flush=True)
或者运行:
nohup python -u app.py > nohup.out 2>&1 &
-u 表示 无缓冲
默认:
nohup.out 只收集 stdout✅ 正确方式:
nohup ./app > nohup.out 2>&1 &
常见情况:
✅ 检查:
nohup.out
或:
tail -f nohup.out
✅ 也可以手动跑一次:
./app
看是否报错。
nohup.out 默认生成在:
✅ 查找:
find / -name nohup.out 2>/dev/null
nohup ./app > app.log 2>&1 &
nohup python -u app.py > app.log 2>&1 &
nohup java -jar app.jar > app.log 2>&1 &
tail -f app.log
lsof -p PID
nohup 日志为空,99% 不是 nohup 的问题,而是:
- 程序没输出
- 输出被重定向 / 吞掉
- stdout 缓冲
- stderr 没合并
如果你愿意,可以把:
发出来,我可以直接帮你定位是哪一条 ✅