温馨提示×

nohup日志过大怎处理

小樊
35
2026-09-15 16:23:19
栏目: 编程语言

nohup 默认会把输出写到 nohup.out,时间一长很容易变得非常大。常见处理方式如下:


1. 启动时就不要写巨大日志(推荐)

重定向到文件并按时轮转

nohup your_command > app.log 2>&1 &

丢弃不需要的日志

如果日志不重要:

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

2. 使用 logrotate(生产环境推荐)

假设日志是 app.log

sudo vim /etc/logrotate.d/app

内容示例:

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

说明:

  • copytruncate:不重启进程直接截断日志(适合 nohup)
  • rotate 7:保留 7 份
  • compress:压缩旧日志

3. 手动清理当前 nohup.out

安全清空(不删文件)

: > nohup.out
# 或
truncate -s 0 nohup.out

⚠️ 不要直接 rm nohup.out,否则进程可能继续写丢失的文件描述符。


4. 用 cron 定时清理

例如每天凌晨清空:

0 0 * * * truncate -s 0 /path/to/nohup.out

5. 更优方案(长期)

  • systemd 管理进程(自带日志轮转)
  • supervisor
  • 程序内集成日志库(如 logrotate / log4j / zap)

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

  • 是什么程序(Java / Python / Shell)
  • 日志路径
  • 是否在服务器上长期运行

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

0