温馨提示×

debian nohup日志怎么备份

小樊
51
2026-09-28 17:08:09
栏目: 智能运维

在 Debian 上用 nohup 启动程序时,输出通常会重定向到 nohup.out 或你自己指定的日志文件。所谓“备份 nohup 日志”,一般有以下几种常见做法,按使用场景给你说明。


一、最常见的 nohup 日志形式

nohup python app.py > nohup.out 2>&1 &

日志就在:

nohup.out

二、手动备份日志(简单方式)

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

或压缩:

tar czf nohup.out.$(date +%F).tar.gz nohup.out

⚠️ 注意:
不要直接 rm nohup.out,否则程序可能继续往已删除文件写,磁盘不释放。


三、日志轮转(推荐✅)

1️⃣ 使用 logrotate(最规范)

适合长期运行服务。

示例:备份 /home/user/nohup.out

新建配置文件:

sudo vim /etc/logrotate.d/nohup_user

内容示例:

/home/user/nohup.out {
    daily
    rotate 7
    compress
    missingok
    notifempty
    copytruncate
}

说明:

  • copytruncate:关键,不重启进程就能截断日志
  • rotate 7:保留 7 份
  • compress:压缩旧日志

测试:

sudo logrotate -d /etc/logrotate.d/nohup_user

2️⃣ 使用 logrotate + 自定义日志路径

如果你是:

nohup app > /var/log/app.log 2>&1 &

配置:

/var/log/app.log {
    size 50M
    rotate 5
    compress
    copytruncate
}

四、启动时直接按日期生成日志(简单粗暴)

nohup python app.py > app_$(date +%Y%m%d).log 2>&1 &

每天重启一次即可分开日志。


五、定时自动备份(cron)

crontab -e

每天凌晨备份:

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

六、如果你不想日志越来越大

✅ 最佳实践:

  • 用 logrotate
  • 或 改程序用 logging 模块 + 日志轮转
  • 或 用 systemd 替代 nohup

七、systemd(进阶推荐)

如果可以,不建议长期用 nohup:

[Service]
ExecStart=/usr/bin/python app.py
StandardOutput=append:/var/log/app.log

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

  • 你的程序是什么(Python / Java / Node)
  • 日志路径
  • 是否 7×24 运行

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

0 踩