温馨提示×

centos nohup日志怎么设置大小

小樊
47
2026-09-18 08:08:30
栏目: 智能运维

在 CentOS 下,nohup 本身不能设置日志大小,它只是忽略挂断信号并把输出重定向到文件(默认 nohup.out)。

要“控制 nohup 日志大小”,常见做法有下面几种:


一、用 nohup + 重定向 + 日志轮转(推荐)

1️⃣ nohup 输出到指定日志

nohup your_command > app.log 2>&1 &

2️⃣ 使用 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. &

效果:

  • 每 100MB 生成一个文件
  • 文件名类似:
    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

如果你愿意,可以告诉我:

  • 你跑的是什么程序(Java / Python / shell)
  • 是否是长期运行服务

我可以给你最合适的配置示例。

0 踩