在 CentOS 上,nohup 日志占用空间大通常不是 nohup 本身的问题,而是由程序输出行为 + 日志重定向方式 + 磁盘/日志管理策略共同导致的。下面分点说明常见原因和解决办法。
nohup java -jar app.jar &
默认会生成:
nohup.out
只要程序:
文件就会无限增长。
✅ 这是最常见原因
很多程序:
nohup app > nohup.out 2>&1 &
2>&1 会把 stderr 也写进同一文件,体积翻倍。
如:
生产环境非常容易爆盘。
例如:
会出现:
每秒几 MB 日志
nohup.out 默认不会自动切割,不像:
例如:
多个 PID 同时写,文件迅速变大。
ls -lh nohup.out
du -sh nohup.out
lsof | grep nohup.out
tail -f nohup.out
df -h
du -sh /*
nohup java -jar app.jar > app.log 2>&1 &
并且程序内部用:
nohup app > /dev/null 2>&1 &
示例 /etc/logrotate.d/app:
/opt/app/nohup.out {
size 100M
rotate 5
copytruncate
missingok
notifempty
}
⚠️ copytruncate 对 nohup 很关键
[Service]
ExecStart=/opt/app/app.jar
StandardOutput=journal
StandardError=journal
查看:
journalctl -u app
# 不中断程序清空
: > nohup.out
# 或
truncate -s 0 nohup.out
⚠️ 不要直接 rm nohup.out,可能导致:
nohup 日志大,不是 nohup 的锅,而是“程序一直写 + 不轮转 + 不清理”
如果你愿意,可以把:
发我,我可以给你定制一套最优方案。