在 CentOS 下,nohup 本身不能设置日志大小,它只是忽略挂断信号并把输出重定向到文件(默认 nohup.out)。
要“控制 nohup 日志大小”,常见做法有下面几种:
nohup + 重定向 + 日志轮转(推荐)nohup your_command > app.log 2>&1 &
logrotate 控制大小(CentOS 自带)创建配置:
vi /etc/logrotate.d/app-log
示例:
/opt/app/app.log {
size 100M
rotate 5
missingok
notifempty
compress
copytruncate
}
参数说明:
size 100M:日志超过 100M 才轮转rotate 5:保留 5 个旧日志copytruncate:不重启进程直接截断日志(对 nohup 程序最安全)测试:
logrotate -d /etc/logrotate.d/app-log
split 限制日志大小(简单粗暴)nohup your_command | split -b 100m - app.log. &
效果:
app.log.aa
app.log.ab
缺点:不方便查看最新日志
cron 定期清空(不推荐)0 0 * * * > /opt/app/app.log
风险:
✅ 用 systemd 管理程序
[Service]
StandardOutput=append:/var/log/app.log
systemd 可配合 logrotate 自动管理。
| 场景 | 推荐方式 |
|---|---|
| 临时跑脚本 | nohup + logrotate |
| 长期服务 | systemd |
| 简单控制大小 | split |
如果你愿意,可以告诉我:
我可以给你最合适的配置示例。