新人想用 rm -rf释放磁盘空间,被我拦下了 ✋




有天正准备下班,突然监控报警:生产环境磁盘空间使用率 100%!
刚入行的徒弟慌了手脚,连上服务器就要用 rm -rf 去删几个旧的日志文件。 我赶紧拦住他:“慢着!你这时候直接删文件,搞不好服务就崩了,而且空间可能根本回不来!”
分享一套处理磁盘爆满的“标准SOP”,稳 准 狠。
🔍 第一步:抓出“吃硬盘”的元凶
很多新手只会 ls -lh 到处翻,太慢!用这行代码,瞬间列出全系统最大的 10 个文件/目录:
# du -ah / 2>/dev/null | sort -rh | head -n 10
65G /
51G /var/log/nginx/access.log
4.7G /var/lib/mysql/ibdata1
2.2G /usr/lib
……
(一眼就看到是 Nginx 的 access.log 涨到了 50G)
✂ 第二步:老手的“骚操作”(重点!)
徒弟问:“找到了,那我现在 rm access.log?”
错!大错特错! 如果Nginx正在写这个日志,你直接删除文件,磁盘空间是不会释放的!(因为文件句柄还被进程占用),而且还得重启服务,风险太大。
20年老兵的解法: 不删文件,而是**“清空”**文件。用这一个符号就够了:
Bash
> access.log
(或者 echo \"\" > access.log)
原理: 这条命令会把文件内容瞬间清零,并且文件还在,句柄不丢,服务不崩,但 50G 空间瞬间回来了!这就是运维的优雅。
🧹 第三步:如果删了文件空间没释放怎么办?
如果已经被新手误删了,进程还卡着空间,用这句查出是谁:
Bash
lsof | grep deleted
拿到PID后,优雅地reload或者直接kill掉对应的进程,空间就释放了。
我是Root大叔,一个45岁还在一线的运维老兵。 你在工作中遇到过磁盘空间满的事故吗?评论区聊聊吧! 👇
#Linux #运维 #磁盘清理 #服务器维护 #rm-rf #程序员 #技术干货 #Shell