在 Linux 中,nohup 默认会把标准输出和标准错误都追加到当前目录下的 nohup.out 文件中。你可以通过重定向来自定义日志的输出位置、格式和大小控制。
下面按常见场景详细说明。
nohup command > nohup.log 2>&1 &
含义:
> nohup.log:标准输出重定向到 nohup.log2>&1:标准错误也重定向到标准输出&:后台运行✅ 推荐写法
nohup command > stdout.log 2> stderr.log &
stdout.log:正常输出stderr.log:错误日志⚠️ 实际生产中更推荐合并到一个日志文件,方便排查。
nohup command > /data/logs/app.log 2>&1 &
或先创建目录:
mkdir -p /data/logs
nohup command > /data/logs/app.log 2>&1 &
nohup command > /dev/null 2>&1 &
适用于:
logrotate(生产环境首选)示例 /etc/logrotate.d/myapp:
/data/logs/app.log {
daily
rotate 7
compress
missingok
notifempty
}
cronolog(不推荐新项目)nohup command >> /data/logs/app_$(date +%Y%m%d).log 2>&1 &
⚠️ 注意:
nohup java -jar app.jar > /data/logs/app.log 2>&1 &
nohup python3 main.py > /data/logs/main.log 2>&1 &
nohup ./start.sh > /data/logs/start.log 2>&1 &
tail -f app.log
less app.log
nohup.out✅ 解决:
nohup command > app.log 2>&1 &
>:覆盖>>:追加(推荐)nohup command >> /data/logs/app.log 2>&1 &
如果还有具体场景(如 Java 服务、Docker、K8s、日志太大),可以直接告诉我,我可以给你更精确的方案。