一、概述
lsof(list open files)是一个查看当前系统文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,该文件描述符提供了大量关于这个应用程序本身的信息。
1.1 lsof打开的文件可以是:
- 普通文件
- 目录
- 网络文件系统的文件
- 字符或设备文件
- (函数)共享库
- 管道,命名管道
- 符号链接
- 网络文件(例如:NFS file、网络socket,unix域名socket)
- 还有其它类型的文件,等等
1.2 lsof输出各列信息的意义如下:
-
COMMAND:进程的名称
-
PID:进程标识符
-
PPID:父进程标识符(需要指定-R参数)
-
USER:进程所有者
-
PGID:进程所属组
-
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等:
二、看已经删除的文件,空间有没有释放,没有的话kill掉pid
lsof -n |grep deleted
lsof | grep delete | awk '{print $2}' | xargs kill
三.删除文件句柄
lsof | grep delete | awk 'print $2' | xargs kill
</article>