温馨提示×

CentOS nohup日志为何找不到

小樊
36
2026-08-30 13:32:12
栏目: 智能运维

在 CentOS 上使用 nohup 时,如果找不到日志,最常见的原因是:默认输出位置不对、命令写法不同、或被重定向到了其他文件。下面按“最常见 → 次常见”给你系统排查一下。


一、nohup 日志默认在哪里?

✅ 默认行为

如果你这样执行:

nohup command &

那么:

  • 标准输出 + 标准错误 默认都会写入:
    nohup.out
    
  • 文件位置:当前工作目录

⚠️ 关键点:
不是命令所在目录,而是你执行命令时所在的目录

示例

cd /tmp
nohup java -jar app.jar &

日志就在:

/tmp/nohup.out

二、最容易踩坑的 6 种情况

1️⃣ 找不到 nohup.out(最常见)

你可能在别的目录找:

ls nohup.out

✅ 正确做法:

find / -name nohup.out 2>/dev/null

或查看当前目录:

pwd
ls -lh nohup.out

2️⃣ 输出被重定向到别的地方

如果你这么写过:

nohup command > app.log 2>&1 &

那日志不会在 nohup.out,而在:

app.log

✅ 查一下启动命令:

ps -ef | grep command

3️⃣ 用了 &>,路径不是你以为的

nohup command &> /var/log/app.log &

日志在:

/var/log/app.log

4️⃣ nohup.out 没写权限

如果当前目录不可写,nohup 会尝试写到:

$HOME/nohup.out

✅ 检查:

ls -lh ~/nohup.out

5️⃣ 程序本身不走 stdout

有些程序(尤其是 Java / Python / 自研服务):

  • 日志写到了自己配置的 log 文件
  • 根本不输出到 stdout

✅ 检查进程:

lsof -p PID

或:

ls -l /proc/PID/fd

6️⃣ 程序很快就退出了(你以为在跑)

nohup command &
ps -ef | grep command

如果进程不存在,日志可能:

  • 没来得及写
  • 写到了 stderr(但没重定向)

✅ 建议这样启动:

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

五、如果你愿意,我可以直接帮你定位

你可以直接贴出:

  1. 启动命令
  2. ps -ef | grep 程序名
  3. 你期望日志在哪个目录

我可以 一步一步帮你找到日志在哪,甚至告诉你为什么没生成

0