温馨提示×

centos nohup日志为啥变大

小樊
42
2026-10-09 02:30:01
栏目: 智能运维

在 CentOS 上用 nohup 启动程序时,日志文件不断变大通常是下面这些原因导致的,非常常见:


一、最常见原因:nohup 默认会写日志

你大概率是这样启动的:

nohup java -jar app.jar &

或:

nohup ./start.sh &

默认行为

  • nohup 会把标准输出(stdout)和标准错误(stderr)写入:
nohup.out
  • 如果程序一直打印日志,nohup.out 就会无限增长

✅ 这是“正常但危险”的行为


二、程序本身日志输出太多

例如:

  • DEBUG 级别日志
  • 定时任务不断打印
  • 请求量很大,访问日志全打在控制台
  • 异常被捕获后又不断打印

即使你重定向了日志,只要程序在打,文件就会变大。


三、日志没有被切割(没有 logrotate)

CentOS 默认:

  • nohup.out 不会被自动切割
  • 不像 /var/log/messages 有 logrotate

结果就是:

  • 几个月后 nohup.out 几个 G 很常见

四、你多次启动,日志被不断追加

如果你这样操作:

nohup java -jar app.jar >> nohup.out &

每次启动都 追加写入,文件只会越来越大。


五、程序没退出,但一直在跑(正常)

nohup 的本意就是:

断开终端后程序继续运行

所以日志持续增大,本身说明: ✅ 程序在正常运行
❌ 但日志管理方式不对


六、怎么解决(推荐做法)

✅ 方案 1:重定向日志(最常见)

nohup java -jar app.jar > app.log 2>&1 &

或按天:

nohup java -jar app.jar >> app_$(date +%F).log 2>&1 &

✅ 方案 2:用 logrotate(服务器推荐)

示例 /etc/logrotate.d/app:

/opt/app/app.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    copytruncate
}

⚠️ 注意:copytruncate 对 nohup 日志非常关键


✅ 方案 3:程序内部写日志(最好)

  • Logback / Log4j2
  • 配置滚动日志(RollingFile)

这样 nohup.out 几乎不增长


✅ 方案 4:彻底不写 nohup.out

nohup ./app > /dev/null 2>&1 &

七、一句话总结

CentOS 上 nohup 日志变大,不是 bug,而是你没管日志。

如果你愿意,可以把:

  • 启动命令
  • 程序类型(Java / Python / Shell)
  • 日志路径

发出来,我可以帮你定制一套不爆盘的日志方案。

0 踩