温馨提示×

centos nohup日志如何定位

小樊
42
2026-08-04 09:29:51
栏目: 智能运维

CentOS 下使用 nohup 启动程序时,日志定位主要看 nohup 默认行为你有没有手动指定日志文件。下面按常见情况说明。


一、nohup 默认日志位置

如果你是这样启动的:

nohup java -jar app.jar &

那么:

  • 标准输出 + 标准错误 默认会写入:
    nohup.out
    
  • 文件位置:
    • 当前工作目录
    • 如果当前目录不可写,则写入:
      $HOME/nohup.out
      

查找 nohup.out

ls -l nohup.out

或全局查找:

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

二、手动指定日志文件(推荐)

1️⃣ 指定日志文件

nohup java -jar app.jar > app.log 2>&1 &

日志位置:

app.log   # 当前目录

2️⃣ 同时输出 stdout / stderr

nohup ./start.sh > run.log 2>&1 &

含义:

  • > run.log:标准输出
  • 2>&1:错误输出也写入同一文件

三、如何确认进程对应的日志文件

1️⃣ 查看进程

ps -ef | grep app.jar

2️⃣ 查看进程打开的文件(非常有用)

lsof -p PID

重点关注:

cwd  -> 当前工作目录
txt  -> 程序
1w   -> stdout
2w   -> stderr

示例:

lsof -p 12345 | grep log

四、实时查看 nohup 日志

tail -f nohup.out

或:

tail -f app.log

五、常见坑 & 排查技巧

1️⃣ 日志没内容?

  • 程序可能:
    • 还没输出
    • 使用了 日志框架(logback / log4j),输出到了自己的日志目录
  • 检查日志配置:
    find . -name "*.log"
    

2️⃣ 程序启动了但找不到日志?

ls -l /proc/PID/fd

3️⃣ 想重新生成 nohup.out

rm nohup.out

⚠️ 注意:正在运行的程序仍持有文件句柄,磁盘空间不会立刻释放。


六、推荐的标准做法(生产环境)

nohup java -jar app.jar \
> /data/logs/app/app.log 2>&1 &

或:

nohup java -jar app.jar >> /data/logs/app/app.log 2>&1 &

如果你愿意,可以把你的 启动命令程序类型(Java / Python / Shell) 发出来,我可以帮你精确判断日志在哪。

0