温馨提示×

如何压缩nohup日志文件呢

小樊
39
2026-08-05 09:28:44
栏目: 编程语言

压缩 nohup 产生的日志文件(通常是 nohup.out)时,一定要小心,不要直接覆盖正在写入的文件。下面给你几种安全、常用的做法,从简单到推荐。


✅ 方法一:清空并压缩(最常用、最安全)

适合:日志已经很大,想保留历史内容,同时让程序继续写日志

步骤

# 1. 把当前 nohup.out 内容压缩保存
tar -czf nohup_$(date +%F).tar.gz nohup.out

# 2. 清空原文件(不会中断程序)
: > nohup.out

✅ 优点

  • 不影响正在运行的程序
  • 日志文件立即变小
  • 历史日志被压缩保存

✅ 方法二:cp + truncate(更稳妥)

cp nohup.out nohup_$(date +%F).log
: > nohup.out
gzip nohup_$(date +%F).log

✅ 适合对 tar 不熟悉的人
✅ 和上面效果一样


✅ 方法三:使用 logrotate(强烈推荐,生产环境

如果你长期运行程序,这是最专业的方式。

示例 logrotate 配置

/your/path/nohup.out {
    daily
    rotate 7
    compress
    copytruncate
    missingok
}

说明

  • copytruncate:复制后清空原文件(不中断程序)
  • compress:自动 gzip
  • rotate 7:保留 7 份

✅ 一劳永逸
✅ 不需要手动处理


❌ 不推荐的方法

❌ 直接 gzip nohup.out

gzip nohup.out

❌ 会导致:

  • 程序继续写原文件描述符
  • 日志丢失
  • 磁盘空间不释放

✅ 查看当前 nohup.out 大小

du -h nohup.out

✅ 总结推荐

场景 推荐方式
临时处理 tar -czf + : > nohup.out
长期运行 logrotate
新手 cp + gzip

如果你愿意,可以把你的系统(CentOS / Ubuntu)程序运行方式发我,我可以帮你写一份完整的 logrotate 配置

0