清理 nohup.out 或其它 nohup 产生的大日志文件,要避免直接删除正在被进程占用的文件。下面给你几种安全、常用、可恢复的做法,从推荐到不推荐依次说明。
这是最推荐的方式。
: > nohup.out
或
cat /dev/null > nohup.out
✅ 优点
truncate -s 0 nohup.out
效果同上,适合 CentOS / Ubuntu 等主流系统。
# 找到进程
ps -ef | grep your_process
# 停止进程
kill PID
# 删除日志
rm -f nohup.out
# 重新启动
nohup java -jar app.jar > nohup.out 2>&1 &
⚠️ 缺点:服务会中断
rm nohup.out
❌ 问题:
lsof | grep deleted 能看到如果只是误删了,可用:
lsof | grep deleted
找到进程并重启才能释放空间。
示例 /etc/logrotate.d/nohup:
/path/to/nohup.out {
size 100M
copytruncate
rotate 5
compress
missingok
notifempty
}
✅ 自动按大小切割
✅ 不中断进程
nohup java -jar app.jar > app.log 2>&1 &
或只保留错误日志:
nohup java -jar app.jar > /dev/null 2> error.log &
StandardOutput=append:/var/log/app.log
StandardError=append:/var/log/app.err
| 场景 | 推荐操作 |
|---|---|
| 正在运行 | : > nohup.out |
| 想自动管理 | logrotate |
| 可重启 | kill + rm + 重启 |
| 生产环境 | systemd / 日志框架 |
如果你愿意,可以告诉我:
我可以帮你定制一套 不重启、不丢日志 的清理方案。