12个实例讲解Linux lsof命令

lsof 是 打开文件列表 显示在 Linux 系统上哪些文件保持打开状态以及哪些进程打开了它们的详细信息。 它由 Victor A. Abell 开发和支持。

本文将帮助您了解 lsof 命令的用法以及 12 个实际示例。

使用 lsof 的所有打开文件列表

要查看打开文件的列表,只需执行 lsof,您将获得如下所示的输出,您可以在其中看到命令、Pid、用户、FD 等标题。

$ lsof

在上面的示例中,大多数列及其值是不言自明的。 所以让我们看看 FD 到底是什么,Fd 指的是文件描述符,它包含如下值:

  • cwd-当前工作目录
  • rtd——根目录
  • txt – 文本
  • mem – 内存映射文件

为特定用户打开文件列表

您可以使用命令的 -u 选项指定用户,该命令允许您列出该用户的所有打开文件。

$ lsof -u root

按进程 ID 列出打开的文件

假设您知道特定进程的 pid,您可以使用 -p 选项以及以 pid 值结尾的命令搜索基于 pid 的打开文件列表。 您需要运行下面给出的示例中指定的命令。

# lsof -p 82

具体端口运行流程

要检查哪个进程占用了特定端口,您可以使用 -i 选项以及 TCP/UDP 的端口号列出它们。 在下面的例子中,让我们找出哪个进程占用了 80 端口。

# lsof -i:80

显示特定网络文件(IPv4 和 IPv6)列表

为了根据网络文件类型显示打开的文件,您需要在 -i 选项后面指定类型。

对于 IPv4,您需要运行如下命令。

# lsof -i 4

对于 IPv6 运行命令,

# lsof -i 6

查找侦听特定端口范围的进程

如果要显示特定端口范围的打开文件列表。 您需要使用 -i 尾随带有特定端口范围的命令。

# losf -i TCP:1-100

从打开的文件列表中排除特定用户

您可以使用以下示例中给出的命令的“^”字符将用户从输出中排除。

# lsof -i -u^sanju

按目录路径列出进程

要查找在特定目录上运行的进程,您可以运行带有 +D 选项的命令,该选项与路径一起跟踪。 您必须按以下方式执行命令。

# lsof +D /home/sanju

显示网络连接

该命令的用户 -i 选项以查看基于侦听和已建立的网络连接列表。

$ lsof -i

杀死特定进程

有时某些进程可能会拒绝关闭,即使您 close 该进程或某些未知进程可能会占用您要运行特定程序的端口。 为了强制关闭进程,您可以使用 lsof 命令,因为它更容易列出正在运行的进程。 因此,您需要按以下方式运行命令。

# kill -9 $(lsof -t -i:8080)

根据 FD(文件描述符)列出打开的文件

您可以根据 FD 类型过滤打开的文件,您需要使用 -d 选项以及 FD 类型,如下例中所述。

# lsof -d rtd

根据进程名称列出打开的文件

您可以使用命令的 -c 选项根据进程名称列出文件。 通过以下方式运行命令

# lsof -c nginx

结论

感谢您抽出时间阅读本文。 我希望您对如何使用 lsof 命令有所了解。 这些是我在部署应用程序期间发现有用的东西。