温馨提示×

怎么重定向nohup日志文件

小樊
47
2026-08-05 09:26:46
栏目: 编程语言

在 Linux 中,nohup 默认会把输出写到当前目录下的 nohup.out 文件。如果你想重定向 nohup 的日志文件,常见做法如下:


一、最常用方式(推荐)

重定向标准输出和错误输出到指定日志文件

nohup your_command > my.log 2>&1 &

说明:

  • >:重定向标准输出(stdout)
  • 2>&1:把标准错误(stderr)也重定向到标准输出
  • &:后台运行

✅ 这是最标准、最推荐的写法。


二、分别重定向 stdout 和 stderr

nohup your_command > stdout.log 2> stderr.log &

适合需要分开查看正常日志和错误日志的场景。


三、追加日志(而不是覆盖)

默认 > 会覆盖文件,如果想追加日志

nohup your_command >> my.log 2>&1 &

四、指定工作目录 + 日志路径

nohup ./app.sh > /var/log/app.log 2>&1 &

或:

cd /opt/app
nohup ./app.sh > logs/app.log 2>&1 &

五、如果已经用 nohup 启动,如何“重定向”?

nohup 一旦启动,不能直接修改它的日志文件。但你可以:

1️⃣ 清空 nohup.out(不中断进程)

: > nohup.out
# 或
truncate -s 0 nohup.out

⚠️ 注意:这只是清空文件,不是重定向。


2️⃣ 使用 gdb / strace(不推荐,生产慎用)

可以强行替换文件描述符,但风险高,一般不推荐。


六、更好的替代方案(工业级)

✅ 使用 systemd

StandardOutput=append:/var/log/app.log
StandardError=append:/var/log/app.err

✅ 使用 screen / tmux

tmux new -s myapp
./myapp

七、常见错误示例 ❌

❌ 错误:

nohup ./app > log.txt

漏了 2>&1,stderr 可能仍然输出到终端或 nohup.out。


总结(记住这一句就够了)

最常用写法:

nohup command > app.log 2>&1 &

如果你愿意,可以告诉我:

  • 你用的是 CentOS / Ubuntu / Debian
  • Java / Python / Shell / Node
  • 是临时跑还是长期服务

我可以帮你给出最合适的日志方案

0