Linux中的lsof命令显示有关进程打开的文件的输出信息。 在本文中,我们将使用10个易于理解的示例来讨论该工具。 请注意,本教程中提到的所有示例都已在Ubuntu 16.04LTS上进行了测试。
lsof的
如果要快速查看特定进程(或所有进程)打开的文件的名称,则可以使用lsof命令。 打开的文件可以是常规文件,目录,库,块特殊文件,字符特殊文件,执行文本引用,甚至流或网络文件。
1.如何列出所有打开的文件
要列出所有打开的文件,请运行没有任何参数的lsof命令:
lsof
例如,以下是我系统上生成的以上命令输出的一部分的screengrab:
第一列表示进程,而最后一列包含文件名。 有关所有列的详细信息,请转到命令的手册页 。
2.如何列出属于特定用户的进程打开的文件
该工具还允许您列出属于特定用户的进程打开的文件。 可以使用-u命令行选项访问此功能。
lsof -u [user-name]
例如:
lsof -u youcl
3.如何根据自己的Internet地址列出文件
该工具可让您根据其Internet地址列出文件。 这可以使用-i命令行选项来完成。 例如,如果需要,您可以分别显示IPv4和IPv6文件。 对于IPv4,请运行以下命令:
lsof -i 4
例如:
类似地,对于IPv6,请运行以下命令:
lsof -i 6
例如:
lsof -i 6
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列表进程的父PID
还有一个选项强制lsof在输出中列出父进程标识(PPID)号。 该选项是-R 。
$ lsof -R
要获取特定PID的PPID信息,可以运行以下命令:
$ lsof -p [PID] -R
例如:
$ lsof -p 3 -R
结论
虽然lsof提供了大量的选择,我们在这里讨论的应该足以让你开始。 一旦你完成了这些练习,请转到工具的手册页 ,了解更多信息。 哦,如果你有任何疑问和疑问,请在下面留下评论。