在 Debian(以及大多数 Linux 发行版)上,nohup 日志不断增大是正常现象,通常不是 bug,而是使用方式或程序行为导致的。下面从原因到解决办法系统说明。
nohup 默认会重定向输出当你执行:
nohup command &
系统默认会把:
写入当前目录的:
nohup.out
如果程序:
nohup.out 就会一直增大。
常见情况:
即使你“什么都没做”,程序也可能在刷日志。
很多命令实际是:
nohup command > nohup.out 2>&1 &
stderr 和 stdout 合并 → 日志翻倍增长
nohup.out 不在 logrotate 管理范围内,所以:
ls -lh nohup.out
du -h nohup.out
tail -f nohup.out
lsof | grep nohup.out
不要用默认 nohup.out:
nohup command > app.log 2>&1 &
或只保留错误:
nohup command > /dev/null 2> error.log &
nohup command > /dev/null 2>&1 &
适合:
mv nohup.out nohup.out.1
kill -USR1 PID # 部分程序支持
/etc/logrotate.d/myapp
/opt/myapp/nohup.out {
size 100M
rotate 5
compress
copytruncate
}
⚠️ copytruncate 很关键,否则程序仍写旧 inode
不要再用 nohup:
[Service]
ExecStart=/opt/myapp/app
StandardOutput=journal
StandardError=journal
查看日志:
journalctl -u myapp
以下情况可能不是“正常增长”:
可先:
> nohup.out # 清空(不删文件)
Debian 上 nohup 日志增大,是因为程序持续输出,而 nohup.out 没有日志轮转机制。
如果你愿意,可以贴出:
我可以给你最合适的重定向或日志方案。