nohup 本身不会自动帮你“创建日志文件”,它只是保证进程在终端关闭后继续运行,并把标准输出(stdout)和标准错误(stderr)默认重定向到一个文件(通常是 nohup.out)。
如果你发现“没有日志文件”,一般有以下几种常见原因:
即使用了 nohup,如果程序:
那么 nohup.out 可能根本不会被创建。
✅ 验证方式:
nohup echo hello > /tmp/test.log 2>&1 &
cat /tmp/test.log
常见写法:
nohup python app.py > /dev/null 2>&1 &
这种情况下:
/dev/null✅ 正确写法(保留日志):
nohup python app.py > app.log 2>&1 &
nohup 默认会在当前目录创建 nohup.out:
nohup command &
如果当前目录不可写(如 /、/root 在某些环境),可能:
✅ 解决:
cd ~
nohup your_command > my.log 2>&1 &
有些程序(如 nginx、java -jar 某些框架):
导致:
nohup.out 没有内容✅ 查看程序文档,找 logs/、logback.xml、application.log
nohup command & 但 shell 立即退出在脚本或某些环境中(如 crontab、docker entrypoint),如果 shell 结束太快,文件可能没来得及 flush。
✅ 建议显式重定向:
nohup command > run.log 2>&1 &
✅ Python 解决:
python -u app.py
或
nohup python -u app.py > app.log 2>&1 &
nohup your_command > run.log 2>&1 &
然后:
tail -f run.log
如果你愿意,可以把你的具体命令和运行环境(Linux 发行版 / 是否 Docker / 是否脚本)发出来,我可以直接帮你定位为什么没日志。