今天接到测试服务器磁盘空间用尽报警,使用df命令查看发现磁盘占用率已达100%。通过du定位到Jenkins日志文件竟达到了363GB。这类问题在Linux运维工作中十分常见,下面分享几种常见的大文件清理方法。
一、基础方法:使用rm命令
很多运维人员首先会想到使用rm命令删除大文件,但执行后通过df检查会发现磁盘占用率并未下降。这是为什么呢?因为rm仅删除了文件目录项,若文件正在被进程占用,其数据块并不会立即从磁盘中释放。如何解决这一问题?
解决方法如下:
1. 重启服务器(仅在必要时采用此方案);
2. 使用 lsof | grep deleted 命令查找仍占用已删除文件的进程。

进程若不终止,磁盘空间自然不会释放。此时需要使用 kill -9 PID 强制终止相关进程,空间才会真正归还系统。
二、输入重定向法:清空文件内容而不删除文件
以下方法均用于清空文件内容,保留文件本身仅释放占用的磁盘空间。非常适合处理如Jenkins日志等需要保留文件但需释放空间的情形。
1. echo > /path/to/somefile
2. cat /dev/null > /path/to/somefile
3. > /path/to/somefile
4. : > /path/to/somefile
以上四种命令的原理相同,均将文件内容截断为零字节,同时保留文件句柄、权限与inode等信息,无需重启进程,实用性极强。适用于日常Linux磁盘空间清理场景。
