在 Debian(以及其它 Linux 发行版)里,nohup 本身不会导致日志过大,它只是让进程在退出终端后继续运行,并把输出默认重定向到 nohup.out。日志过大的根本原因通常是程序输出太多 + 没有日志轮转。
下面从原因到解决办法系统说明。
常见写法:
nohup python app.py &
等价于:
nohup python app.py > nohup.out 2>&1 &
问题:
nohup.outnohup.out 不会自动分割/var/log/ 下有 logrotate例如:
nohup xxx >> nohup.out &
多次重启 → 日志不断追加
du / 监控告警du -sh nohup.out
ls -lh nohup.out
查看哪些文件大:
du -sh /* 2>/dev/null | sort -h
nohup python app.py > /var/log/app.log 2>&1 &
示例 /etc/logrotate.d/app:
/var/log/app.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
copytruncate对 nohup 进程非常重要,避免进程继续写旧文件
[Service]
ExecStart=/usr/bin/python /opt/app.py
StandardOutput=append:/var/log/app.log
StandardError=append:/var/log/app.err
: > nohup.out
或
truncate -s 0 nohup.out
⚠️ 不要直接 rm,否则进程仍持有文件句柄,磁盘不会释放
❌ 一直用 nohup xxx & 跑生产服务
❌ 把日志写到家目录
❌ 靠人工删文件
nohup 日志过大不是 nohup 的锅,而是“无限制写文件 + 无日志轮转”导致的。
如果你愿意,可以贴一下:
我可以直接帮你写一套合适的日志方案。