温馨提示×

centos nohup日志如何设置路径

小樊
78
2026-07-09 03:22:32
栏目: 智能运维

CentOS 下使用 nohup 时,日志路径是可以手动指定的。下面给你几种常见、规范的用法。


一、默认行为(不推荐)

nohup java -jar app.jar &

默认日志会生成在:

nohup.out   (当前目录)

⚠️ 问题:

  • 日志不可控
  • 多个程序容易混在一起
  • 磁盘可能写满

二、指定日志路径(推荐 ✅)

1️⃣ 标准写法(最常用)

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

含义:

  • > :标准输出
  • 2>&1 :错误输出也写入同一个文件
  • & :后台运行

生产环境推荐


2️⃣ 标准输出和错误日志分开

nohup java -jar app.jar > /data/logs/app.out 2> /data/logs/app.err &

3️⃣ 追加日志(而不是覆盖)

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

三、指定工作目录 + 日志(推荐实践)

mkdir -p /data/logs

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

echo $! > /data/logs/app.pid

四、查看是否生效

ps -ef | grep app.jar
tail -f /data/logs/app.log

五、防止 nohup.out 自动生成

即使你重定向了日志,如果程序内部仍写 stdout,有时仍会生成 nohup.out

✅ 解决方法:

nohup sh -c 'exec java -jar app.jar > /data/logs/app.log 2>&1' &

六、生产环境更优方案(补充)

✅ 使用 systemd(CentOS 7+ 强烈推荐)

[Unit]
Description=app service

[Service]
ExecStart=/usr/bin/java -jar /opt/app/app.jar
StandardOutput=append:/data/logs/app.log
StandardError=append:/data/logs/app.log
Restart=always

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start app

七、总结(速查)

场景 命令
指定日志 nohup cmd > log 2>&1 &
追加日志 >> log 2>&1 &
分开日志 > out 2> err &
生产环境 systemd

如果你愿意,可以把 具体命令 / 程序类型(Java / Python / Shell) 发我,我可以帮你写一条完全适合你环境的命令

0