温馨提示×

nohup日志大小如何限制

小樊
43
2026-08-20 10:19:30
栏目: 编程语言

在 Linux 中,nohup 本身没有参数可以直接限制日志文件大小。日志文件(默认是 nohup.out)会一直增长,直到磁盘被写满。

要限制 nohup 日志大小,常见做法有以下几种(按推荐程度排序):


✅ 方法一:重定向日志 + 使用 logrotate(最推荐)

思路
nohup 的输出重定向到指定文件,然后用 logrotate 定期轮转、压缩、限制大小。

1️⃣ 启动程序

nohup your_command > app.log 2>&1 &

2️⃣ 配置 logrotate

创建配置文件:

sudo vim /etc/logrotate.d/app

示例配置:

/path/to/app.log {
    size 100M
    rotate 5
    compress
    missingok
    notifempty
    copytruncate
}

含义:

  • size 100M:日志超过 100M 就轮转
  • rotate 5:最多保留 5 个
  • compress:压缩旧日志
  • copytruncate:不重启进程直接截断日志(适合 nohup)

生产环境首选方案


✅ 方法二:使用 cronolog 按时间/大小切分(较老但实用)

nohup your_command | cronolog "app-%Y%m%d.log" &

或按大小(需配合脚本):

nohup your_command | cronolog "app-%Y%m%d-%H%M.log" &

⚠️ 需要安装 cronolog


✅ 方法三:手动限制日志大小(简单粗暴)

1️⃣ 重定向到固定文件

nohup your_command > app.log 2>&1 &

2️⃣ 定期清空(不推荐长期使用)

: > app.log

或写个定时任务:

0 3 * * * cat /dev/null > /path/to/app.log

⚠️ 会丢失日志,不适合生产


✅ 方法四:在程序中控制日志(最佳实践)

如果程序是你自己写的(Java / Python / Go 等):

  • ✅ 使用日志框架(logback、log4j、logging、zap)
  • ✅ 设置:
    • 单文件大小
    • 滚动策略
    • 保留天数

这是最干净、最可控的方式


❌ 不推荐方式

nohup command > /dev/null 2>&1 &

虽然不会增长日志,但完全丢失输出,排查问题困难。


✅ 总结对比

方法 是否推荐 说明
logrotate ✅✅✅ 最标准、最稳定
cronolog ✅✅ 适合老系统
nohup + 手动清空 ⚠️ 临时方案
程序内日志控制 ✅✅✅ 最佳方案
/dev/null 不建议

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

  • 你用的是 什么程序 / 语言
  • 生产环境还是测试环境
  • 想按 大小 or 时间 限制

我可以帮你写一份可直接用的完整配置

0