在Linux系统中删除了一个大文件后查看相关磁盘空间, 发现磁盘空间没有被释放;
这是以为通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink),如果被删除的文件是被打开的(或者有一个进程正在使用被删除的文件),那么该进程将仍然可以读取被删除的文件,磁盘空间也一直被占用。
lsof命令可以列出当前打开的文件和对应的进程
lsof {{path/to/file}} 找到打开指定文件的进程
lsof -i :{{port}} 找出打开本地因特网端口的进程
lsof -u {{username}} 列出指定用户打开的文件
lsof +D {{path/to/directory}} 列出目录中被打开的文件
注意,lsof命令后面可以使用管道符结合grep查找,如 lsof |grep deleted;
通过lsof命令找到占用被删除文件的进程号,杀死对应进程后,再次查看磁盘空间已被释放。
图文并茂的链接→linux删除文件后却没有释放空间