温馨提示×

centos nohup日志怎么备份

小樊
42
2026-09-24 10:29:18
栏目: 智能运维

在 CentOS 下用 nohup 启动程序时,日志通常会写到类似 nohup.out 的文件里。备份这种日志常见有几种做法,下面按实用程度给你说明。


一、手动备份(最简单)

cp nohup.out nohup.out.bak_$(date +%Y%m%d)

或压缩备份:

tar czf nohup.out_$(date +%Y%m%d).tar.gz nohup.out

⚠️ 注意:备份后 nohup.out 还会继续变大,不会自动清空。


二、备份并清空日志(推荐)

如果程序一直在写 nohup.out:

cp nohup.out nohup.out.bak
> nohup.out

或者:

mv nohup.out nohup.out.$(date +%F)
touch nohup.out

✅ 好处:日志不会无限增长
❌ 风险:如果程序用文件句柄写日志,mv 后可能还写旧文件(见下文)


三、用 logrotate(最规范 ✅)

CentOS 自带 logrotate,非常适合 nohup.out

示例配置

vi /etc/logrotate.d/myapp

内容:

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

说明:

  • copytruncate:复制后清空原文件(不中断程序)
  • rotate 7:保留 7 份
  • compress:压缩旧日志

测试:

logrotate -d /etc/logrotate.d/myapp  # 调试
logrotate -f /etc/logrotate.d/myapp  # 强制执行

✅ 这是生产环境最推荐方式


四、启动时直接指定日志文件(更好)

不要依赖 nohup.out:

nohup java -jar app.jar > /var/log/myapp/app.log 2>&1 &

然后:

logrotate /etc/logrotate.d/myapp

五、定时自动备份(crontab)

crontab -e

每天凌晨备份:

0 0 * * * cp /opt/app/nohup.out /backup/nohup.out.$(date +\%F)

总结建议

场景 建议
临时测试 手动 cp
长期运行 logrotate + copytruncate
新项目 nohup 重定向到指定日志

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

  • 你跑的是什么程序(Java / Python / Shell)
  • 日志路径
  • 是否允许重启

我可以帮你写一套完整备份方案。

0 踩