nohup 命令默认会把输出写入 nohup.out,长时间运行后日志文件很容易变得非常大。下面按安全程度和可操作性给你几种常见清理方式。
logrotate(生产环境首选)如果你是用 nohup 启动的服务,建议配置 logrotate:
示例(/etc/logrotate.d/myapp):
/path/to/nohup.out {
size 100M
rotate 5
copytruncate
compress
missingok
notifempty
}
关键点:
copytruncate:不中断程序就截断日志(非常适合 nohup)size 100M:超过 100M 就轮转truncate 清空日志(推荐)truncate -s 0 nohup.out
✅ 不会删除文件
✅ 程序继续写,不报错
✅ 最安全
cat /dev/null 方式cat /dev/null > nohup.out
效果和 truncate 类似,但 truncate 更清晰。
rm nohup.out(❌ 有风险)rm nohup.out
⚠️ 问题:
nohup your_command > app.log 2>&1 &
或只保留错误:
nohup your_command > /dev/null 2>&1 &
很多程序支持:
your_command --log-level=warn
| 场景 | 推荐方式 |
|---|---|
| 线上运行中 | truncate -s 0 nohup.out |
| 长期运行服务 | logrotate |
| 临时脚本 | 启动重定向日志 |
| 日志无意义 | /dev/null |
如果你愿意,可以告诉我:
我可以帮你写一套最合适的日志方案。