nohup 默认会把输出写到 nohup.out,直接备份这个文件就行,但要注意 不要直接 cp 会导致日志继续写入旧文件的问题。下面给你几种正确、常用的备份方式。
适合:长期运行的服务
cp nohup.out nohup.out.2026-01-21
> nohup.out
cp:备份当前日志> nohup.out:清空原文件✅ 优点:简单、安全、不断服务
✅ 生产环境最常用
logrotate(专业做法)适合:日志长期存在、需要自动轮转
/etc/logrotate.d/myapp/path/to/nohup.out {
daily
rotate 7
compress
copytruncate
missingok
notifempty
}
copytruncate:复制后截断原文件(⚠️ 有极少量日志丢失风险)rotate 7:保留 7 份compress:gzip 压缩✅ 优点:自动化、规范
❌ 需要 root 权限
nohup java -jar app.jar > app.log 2>&1 &
然后备份:
cp app.log app.log.$(date +%F)
> app.log
✅ 比 nohup.out 更可控
cp nohup.out nohup.out.bak
❌ 问题:
nohup.out 会越来越大lsof -p <pid> | grep txt
或:
ls -l /proc/<pid>/fd
| 场景 | 推荐方式 |
|---|---|
| 临时任务 | cp + > |
| 长期服务 | logrotate |
| 新项目 | 启动时指定日志文件 |
| 生产环境 | logrotate + 指定日志 |
如果你愿意,可以把你的 系统(CentOS / Ubuntu) 和 运行方式(Java / Python / Shell) 发我,我可以帮你写一份 可直接用的备份脚本或 logrotate 配置。