首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

通过10个例子掌握Linux下lsof命令

Linux中的lsof命令在其输出信息中显示有关进程打开的文件的信息。在本文中,我们将使用10个易于理解的示例来讨论该工具。请注意,本教程中提到的所有示例都在Ubuntu 18.04LTS上进行了测试。

关于lsof

如果你想快速查看特定进程(或所有进程)打开的文件名,lsof命令允许你这样做。打开的文件可以是常规文件、目录、库、块特殊文件、字符特殊文件、正在执行的文本引用,甚至是流或网络文件。

1、如何列出所有打开文件

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

lsof

例如,下面是在我的系统上生成的上述命令的一部分输出的屏幕抓取:

不带参数的lsof命令输出结果

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

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

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

lsof -u [user-name]

例如

lsof -u howtoforge

lsof -u howtoforge输出结果

3、如何根据 Internet地址列出文件

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

lsof -i 4

例如

4、如何列出一个特定进程的打开文件

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

lsof -p [PID]

例如,

lsof -p 2066

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

lsof -p [^PID]

例如

lsof -p ^1

从上图中可以看到,id为1的进程打开文件排除了。

5、如何列出已打开特定文件的进程的ID

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

$ lsof -t [file-name]

例如,

$ lsof -t /lib/i386-linux-gnu/libaudit.so.1.0.0

6、如何将lsof限制为特定目录

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

$ lsof +D [directory-path]

例如

$ lsof +D /usr/lib/locale

7、如何列出所有Internet和X.25(HP-UX)网络文件

这可以通过使用前面描述的-i命令行选项来实现。只要不加任何选项即可。

$ lsof -i

8、如何根据端口范围列出打开的文件

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

$ lsof -i :1-1024

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

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

$ lsof -i udp

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

10、如何使lsof列出父进程ID

还有一个选项可以强制lsof在输出中列出父进程标识(ppid)号。解决方法是使用选项-R。

$ lsof -R

结束语

尽管lsof提供了大量的选项,但是我们在这里讨论的选项应该足以让你开始。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190818A0DVYD00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券