在 Linux 中,nohup 默认会把输出写到当前目录下的 nohup.out 文件。如果你想重定向 nohup 的日志文件,常见做法如下:
nohup your_command > my.log 2>&1 &
说明:
>:重定向标准输出(stdout)2>&1:把标准错误(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.out
# 或
truncate -s 0 nohup.out
⚠️ 注意:这只是清空文件,不是重定向。
gdb / strace(不推荐,生产慎用)可以强行替换文件描述符,但风险高,一般不推荐。
systemdStandardOutput=append:/var/log/app.log
StandardError=append:/var/log/app.err
screen / tmuxtmux new -s myapp
./myapp
❌ 错误:
nohup ./app > log.txt
漏了 2>&1,stderr 可能仍然输出到终端或 nohup.out。
✅ 最常用写法:
nohup command > app.log 2>&1 &
如果你愿意,可以告诉我:
我可以帮你给出最合适的日志方案。