在 CentOS 上使用 nohup 时,如果找不到日志,最常见的原因是:默认输出位置不对、命令写法不同、或被重定向到了其他文件。下面按“最常见 → 次常见”给你系统排查一下。
如果你这样执行:
nohup command &
那么:
nohup.out
⚠️ 关键点:
不是命令所在目录,而是你执行命令时所在的目录
cd /tmp
nohup java -jar app.jar &
日志就在:
/tmp/nohup.out
你可能在别的目录找:
ls nohup.out
✅ 正确做法:
find / -name nohup.out 2>/dev/null
或查看当前目录:
pwd
ls -lh nohup.out
如果你这么写过:
nohup command > app.log 2>&1 &
那日志不会在 nohup.out,而在:
app.log
✅ 查一下启动命令:
ps -ef | grep command
&>,路径不是你以为的nohup command &> /var/log/app.log &
日志在:
/var/log/app.log
如果当前目录不可写,nohup 会尝试写到:
$HOME/nohup.out
✅ 检查:
ls -lh ~/nohup.out
有些程序(尤其是 Java / Python / 自研服务):
✅ 检查进程:
lsof -p PID
或:
ls -l /proc/PID/fd
nohup command &
ps -ef | grep command
如果进程不存在,日志可能:
✅ 建议这样启动:
nohup command > app.log 2>&1 &
nohup command > app.log 2>&1 &
nohup command > app_$(date +%F).log 2>&1 &
# 1. 看进程是否在跑
ps -ef | grep 你的程序
# 2. 看当前目录有没有 nohup.out
ls -lh nohup.out
# 3. 全局找 nohup.out
find / -name nohup.out 2>/dev/null
# 4. 看是否重定向了
ps -fp PID
你可以直接贴出:
ps -ef | grep 程序名我可以 一步一步帮你找到日志在哪,甚至告诉你为什么没生成 ✅