使用lsof查询一下刚刚删除的test.bin文件的情况:
lsof | grep deleted
看来确实是被tail这个ID为292709的进程占用了,使用ps命令看一下tail进程的详细信息:
看下进程ID为292709进程的描述符信息(Linux系统上进程打开一个文件时,都会为其分配一个描述符fd,通过/proc/进程ID/fd可以看到进程所有的打开文件信息)
看来确实是tail这个进程占用了test.bin,导致没能真正删除。
2.2 问题解决
解决这个问题有两种办法:
1)由于是tail进程占用了文件,所以直接kill掉tail进程即可,但是这里有一个问题,如果是生产环境,肯定不能随随便便就*掉一个业务进程,因为这样可能会影响客户的业务使用。
2)直接清空文件
echo "" > /proc/292709/fd/3
再次查看一下根目录的空间占用,发现磁盘空间已经被释放了: