在 Linux 下用 nohup 跑程序时,日志排错是常见的运维问题。下面按常见场景 → 排查方法 → 实用技巧给你梳理一遍。
nohup command > output.log 2>&1 &
nohup.out(在当前目录)output.log)⚠️ 常见坑:
ps -ef | grep your_program
或
jobs -l
tail -f nohup.out
# 或
tail -n 200 output.log
如果之前没合并:
nohup command > out.log 2> err.log &
分别看 out.log 和 err.log
✅ 正常提示,不是错误
可能原因:
✅ 解决:
python -u app.py > log.txt 2>&1 &
java -Djava.io.tmpdir=/tmp App > log.txt 2>&1 &
看日志里是否有:
Permission deniedAddress already in useModuleNotFoundError✅ 手动前台跑一次:
command
更容易看到真实错误
lsof -i:8080
netstat -tunlp | grep 8080
nohup 启动时常缺少:
PATHJAVA_HOMEPYTHONPATH✅ 建议:
nohup /bin/bash -c 'source ~/.bashrc; your_command' > log.txt 2>&1 &
nohup /bin/bash -c '
source ~/.bashrc
cd /your/path
python -u app.py
' > app.log 2>&1 &
tail -f app.log
grep -i error app.log
strace 看系统调用(高级):strace -f -o trace.log your_command
nohup 排错 = 看日志 + 前台复现 + 检查权限/环境/端口
如果你愿意,可以把:
nohup 命令发出来,我可以直接帮你定位问题。