nohup 本身只是“忽略挂断信号并运行命令”,日志变大是程序输出没控制导致的。常见处理思路如下:
不要让 nohup xxx > nohup.out 一直写。
方案 A:用 logrotate(系统级,最稳)
/your/path/nohup.out {
size 100M
rotate 5
copytruncate
missingok
compress
}
copytruncate:不重启进程也能截断日志(适合 nohup)方案 B:程序自身支持日志切割
split 切分(简单粗暴)nohup your_cmd | split -b 100m - nohup_part_
生成:
nohup_part_aa
nohup_part_ab
cronolog(按时间切)nohup your_cmd | cronolog /log/%Y%m%d.log
: > nohup.out
# 或
truncate -s 0 nohup.out
⚠ 不要 rm nohup.out,进程还持有文件句柄,磁盘不会释放。
du -sh nohup.out
lsof | grep deleted
[Service]
StandardOutput=append:/var/log/app.log
配合 logrotate,专业且省心。
nohup xxx > nohup.out 无限增长如果你愿意,可以告诉我:
我可以给你更精确的配置。