可以,但 nohup 本身不会自动轮转日志,需要配合其他机制来实现。
常见用法:
nohup your_command >> app.log 2>&1 &
>> 是 shell 重定向所以:
✅ nohup 能写日志
❌ nohup 不能自动轮转
logrotate(推荐,最常用)适用于服务器环境(Linux)
示例配置 /etc/logrotate.d/myapp:
/var/log/app.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
关键参数说明:
copytruncate:复制后清空原文件(对 nohup 友好,不需要重启进程)logrotate + 信号(更标准)如果程序支持:
kill -USR1 pid
可在 logrotate 中写:
postrotate
kill -USR1 $(cat /var/run/myapp.pid)
endscript
如果是你自己的程序,建议:
这样不依赖外部工具,最稳定
cron + split(简单粗暴)0 0 * * * mv app.log app.log.$(date +%F)
⚠ 缺点:
| 场景 | 推荐 |
|---|---|
| 简单脚本 | nohup + logrotate(copytruncate) |
| 生产服务 | 程序内日志轮转 |
| 老程序无法改 | logrotate + copytruncate |
如果你愿意,可以告诉我:
我可以帮你写完整的 logrotate 配置或示例。