跳到主要内容

Linux lsof 命令 - 列出打开的文件和进程

介绍

lsof(英文全拼:list open files)命令用于查看进程开打的文件、打开文件的进程、进程打开的端口(TCP、UDP),甚至可用于找回/恢复删除的文件。

lsof 是十分方便的系统监视工具,因为 lsof 命令需要访问核心内存和各种文件,所以需要 root 权限才能使用所有功能。

在 Linux 环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议(TCP)和用户数据报协议(UDP)套接字等,系统在后台都为其分配了一个文件描述符,该文件描述符为应用程序与操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过 lsof 工具能够查看这个列表,对系统监测以及排错有很大帮助。

语法

lsof [options] [names]

选项

  • -a :列出打开文件存在的进程。
  • -c <进程名> :列出指定进程所打开的文件。
  • -g :列出 GID 号进程详情。
  • -d <文件号> :列出占用该文件号的进程。
  • +d <目录> :列出目录下被打开的文件。
  • +D <目录> :递归列出目录下被打开的文件。
  • -n <目录> :列出使用 NFS 的文件。
  • -i <条件> :列出符合条件的进程。
  • -p <进程号> :列出指定进程号所打开的文件。
  • -u :列出 UID 号进程详情。
  • -h :显示帮助信息。
  • -v :显示版本信息。

示例

直接输入 lsof 查看文件的进程信息

lsof

列出 GID 号进程详情

lsof -g

列出目录下被打开的文件

lsof +d /root

递归列出目录下被打开的文件

lsof +D /home/getiot

列出使用 NFS 的文件

lsof -n /srv/nfs/