在 Debian 上用 nohup 启动程序时,输出通常会重定向到 nohup.out 或你自己指定的日志文件。所谓“备份 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,否则程序可能继续往已删除文件写,磁盘不释放。
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
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 &
每天重启一次即可分开日志。
crontab -e
每天凌晨备份:
0 0 * * * cp /home/user/nohup.out /backup/nohup.out.$(date +\%F)
✅ 最佳实践:
如果可以,不建议长期用 nohup:
[Service]
ExecStart=/usr/bin/python app.py
StandardOutput=append:/var/log/app.log
如果你愿意,可以告诉我:
我可以帮你写一套完整备份方案。