在 CentOS(以及其他 Linux 系统)中,nohup 日志不断增大是非常常见的现象,根本原因通常不是 nohup 本身,而是程序持续输出 + 日志未轮转。下面分点说明原因和解决办法。
使用方式通常是:
nohup command > nohup.out 2>&1 &
或
nohup command &
此时:
都会写入 nohup.out ➡ 只要程序一直打印日志,文件就会无限增长
常见情况:
即使程序“看起来没干活”,也可能在打心跳或异常信息。
nohup.out 不会被系统自动切割
/var/log/messages即使你:
rm nohup.out
如果进程还在运行:
du 看磁盘还在涨ls -lh nohup.out
du -sh nohup.out
lsof | grep nohup.out
tail -f nohup.out
nohup command > /var/log/myapp.log 2>&1 &
配置 logrotate:
/var/log/myapp.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
如果不需要日志:
nohup command > /dev/null 2>&1 &
[Service]
ExecStart=/path/to/command
StandardOutput=journal
StandardError=journal
日志由 journalctl 管理。
: > nohup.out
或
truncate -s 0 nohup.out
nohup 日志增大 = 程序持续输出 + 没有日志轮转 + 文件未截断
如果你愿意,可以把你的启动命令或日志样例发出来,我可以帮你具体优化。