lsof命令用于查看进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。
在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。
语法格式:lsof [参数] [文件]
常用参数:
-a | 列出打开文件存在的进程 |
-c | 列出指定进程所打开的文件 |
-g | 列出GID号进程详情 |
-d | 列出占用该文件号的进程 |
+d | 列出目录下被打开的文件 |
+D | 递归列出目录下被打开的文件 |
-n | 列出使用NFS的文件 |
-i | 列出符合条件的进程 |
-p | 列出指定进程号所打开的文件 |
-u | 列出UID号进程详情 |
-h | 显示帮助信息 |
-v | 显示版本信息 |
参考实例
最简单的用法,直接输入lsof查看文件的进程信息:
[root@1024ask.com ~]# lsof
列出GID号进程详情:
[root@1024ask.com ~]# lsof -g
列出目录下被打开的文件:
[root@1024ask.com ~]# lsof +d /root
递归列出目录下被打开的文件:
[root@1024ask.com ~]# lsof +D /home/1024ask.com
列出使用NFS的文件:
[root@1024ask.com ~]# lsof -n /root
与该功能相关的Linux命令:fg命令 – 将作业放到前台运行findfs命令 – 依据卷标(Label)和UUID查找文件系统所对应的设备文件consoletype命令 – 输出已连接的终端类型runlevel命令 – 显示系统的运行级ssh-copy-id命令 – 复制公钥到远程主机adduser命令 – 创建用户lastb命令 – 列出登入系统失败的用户fbset命令 – 设置景框缓冲区ip6tables命令 – IPv6的防火墙命令hostname命令 – 显示和设置系统的主机名