初学者 Linux lsof 命令教程(15 个示例)初学者 Linux lsof 命令教程(15 个示例)初学者 Linux lsof 命令教程(15 个示例)初学者 Linux lsof 命令教程(15 个示例)
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

初学者 Linux lsof 命令教程(15 个示例)

在此页

  1. 关于 lsof 命令
  2. 安装 Linux lsof 命令
  3. 1。如何列出所有打开的文件
  4. 2。如何列出属于特定用户的进程打开的文件
  5. 4。如何按应用程序名称列出所有文件
  6. 5。如何列出特定于进程的文件
  7. 6。如何列出已打开特定文件的进程的 ID
  8. 7.如何列出目录中所有打开的文件
  9. 8.如何列出所有 Internet 和 x.25 (HP-UX) 网络文件 <李>9。找出哪个程序正在使用端口
  10. 10。如何根据端口范围列出打开的文件
  11. 11。如何根据连接类型(TCP 或 UDP)列出打开的文件
  12. 12。如何使 lsof 列出进程的父 PID
  13. 13。如何按用户查找网络活动
  14. 14。列出所有内存映射文件
  15. 15。列出所有 NFS 文件
  16. 结论

Linux lsof 命令在其输出信息中显示有关进程打开的文件的信息。在本文中,我们将使用 15 个易于理解的示例来讨论 Linux lsof 工具。请注意,本教程中提到的所有示例都已在 Ubuntu 22.04 LTS 上进行了测试,但它们也适用于其他 Linux 发行版,如 Debian、Fedora 和 CentOS。

关于 lsof 命令

如果您想快速查看特定进程(或所有进程)打开的文件的名称,lsof 命令可以让您做到这一点。打开的文件可以是常规文件或目录、库、特殊文件或块设备、字符特殊文件、执行文本引用,甚至是流或网络文件。您还可以按端口号列出进程。如果您没有以 root 用户身份登录,那么您可能必须在命令前添加 sudo。

安装 Linux lsof 命令

大多数 Linux 发行版都预装了 lsof。如果您的系统上尚未安装它,请使用以下命令安装 lsof:

在 Ubuntu 和 Debian 上:

$ sudo apt install lsof

Ond CentOS 和 Fedora:

$ dnf install lsof

1.如何列出所有打开的文件

要列出所有打开的文件,请运行不带任何参数的 lsof 命令:

lsof

例如,这是在我的系统上生成的上述命令的部分输出的屏幕抓图:

第一列代表进程,而最后一列包含文件名。有关所有列的详细信息,请参阅命令手册页。

2.如何列出属于特定用户的进程打开的文件

该工具还允许您列出属于特定用户的进程打开的文件。可以使用 -u 命令行选项访问此功能。

lsof -u [用户名]

例如:

lsof -u 管理员

3. 如何根据互联网地址列出文件

该工具可让您根据 Internet 地址列出文件。这可以使用 -i 命令行选项来完成。例如,如果需要,您可以分别显示 IPv4 和 IPv6 文件。对于 IPv4,运行以下命令:

lsof -i 4

例如:

同样,对于 IPv6,运行以下命令:

lsof -i 6

例如:

lsof -i 6

4.如何按应用程序名称列出所有文件

-c 命令行选项允许您获取按程序名称打开的所有文件。

$ lsof -c apache

您不必使用完整的程序名称,因为会显示所有以单词 apache 开头的程序。所以在我们的例子中,它将列出 apache2 应用程序的所有进程。

-c 选项基本上只是两个命令的快捷方式:

$ lsof | grep apache

5.如何列出特定于进程的文件

该工具还允许您根据进程标识 (PID) 编号显示打开的文件。这可以通过使用 -p 命令行选项来完成。

lsof -p [PID]

例如:

lsof -p 856

继续,您还可以通过在输出前添加 ^符号来排除输出中的特定 PID。要排除特定的 PID,您可以运行以下命令:

lsof -p [^PID]

例如:

lsof -p ^1

正如您在上面的屏幕截图中看到的,id 为 1 的进程被排除在列表之外。

6. 如何列出已打开特定文件的进程 ID

该工具允许您列出已打开特定文件的进程的 ID。这可以通过使用 -t 命令行选项来完成。

$ lsof -t [file-name]

例如:

$ lsof -t /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0

7. 如何列出目录中所有打开的文件

如果需要,您还可以让 lsof 搜索目录的所有打开实例(包括它包含的所有文件和目录)。可以使用 +D 命令行选项访问此功能。

$lsof +D [目录路径]

例如:

$lsof +D /usr/lib/locale

8. 如何列出所有 Internet 和 x.25 (HP-UX) 网络文件

这可以通过使用我们之前描述的 -i 命令行选项来实现。只是您必须在没有任何参数的情况下使用它。

$lsof -i

9.找出哪个程序正在使用端口

该命令的 -i 开关允许您查找侦听特定端口号的进程或应用程序。在下面的示例中,我检查了哪个程序正在使用端口 80。

$ lsof -i :80

您可以使用 /etc/services 文件中列出的服务名称代替端口号。检查哪个应用程序侦听 HTTPS (443) 端口的示例:

$ lsof -i :https

结果:

上面的示例将同时检查 TCP 和 UDP。如果您只想检查 TCP 或 UDP,请在前面加上 tcp 或 udp。例如,哪个应用程序正在使用端口 25 TCP:

$ lsof -i tcp:25

或者哪个应用程序使用 UDP 端口 53:

$ lsof -i udp:53

10.如何根据端口范围列出打开的文件

该实用程序还允许您根据特定端口或端口范围列出打开的文件。例如,要显示端口 1-1024 的打开文件,请使用以下命令:

$lsof -i :1-1024

11. 如何根据连接类型(TCP 或 UDP)列出打开的文件

该工具允许您根据连接类型列出文件。例如,对于 UDP 特定文件,使用以下命令:

$lsof -i udp

同样,您可以使 lsof 显示特定于 TCP 的文件。

12. 如何使 lsof 列出进程的父 PID

还有一个选项可以强制 lsof 在输出中列出父进程标识 (PPID) 编号。有问题的选项是-R。

$ lsof -R

要获取特定 PID 的 PPID 信息,您可以运行以下命令:

$ lsof -p [PID] -R

例如:

$ lsof -p 3 -R

13. 如何按用户查找网络活动

通过结合使用 -i 和 -u 命令行选项,我们可以搜索 Linux 用户的所有网络连接。如果您检查可能已被黑客入侵的系统,这会很有帮助。在此示例中,我们检查用户 www-data 的所有网络活动:

$ lsof -a -i -u www-data

14.列出所有内存映射文件

此命令列出 Linux 上的所有内存映射文件。

$ lsof -d mem

15.列出所有NFS文件

-N 选项显示所有 NFS(网络文件系统)文件的列表。

$lsof -N

结论

尽管 lsof 提供了过多的选项,但我们在这里讨论的选项应该足以让您入门。完成这些练习后,请前往工具手册页了解更多信息。哦,如果您有任何疑问和疑问,请在下面发表评论。

©2015-2025 艾丽卡 support@alaica.com