lsof生存指南[关闭]


104

lsof是用于unix系统的功能强大的命令行实用程序。它列出了打开的文件,并显示有关它们的信息。而且由于大多数内容都是UNIX系统上的文件,因此lsof可以为sysadmins提供大量有用的诊断数据。

使用lsof的最常用和最有用的方法是什么?为此使用了哪些命令行开关?

Answers:


119

显示与给定相关的所有网络port

lsof -iTCP -i :port
lsof -i :22

要显示与特定主机的连接,请使用 @host

lsof -i@192.168.1.5

使用@host:port lsof -i@192.168.1.5:22 显示基于主机和端口的连接

grepping for LISTEN显示系统正在等待连接的端口:

lsof -i| grep LISTEN

显示给定用户已打开的内容-u

lsof -u daniel

查看命令与哪些文件和网络连接一起使用 -c

lsof -c syslog-ng

通过该-p开关,您可以查看给定进程ID所打开的内容,这对于了解有关未知进程的更多信息很有帮助:

lsof -p 10075

-t选项仅返回一个PID

lsof -t -c Mail

一起使用-t-c选项,您可以HUP进行处理

kill -HUP $(lsof -t -c sshd)

您也可以使用-twith -u杀死用户打开的所有内容

kill -9 $(lsof -t -u daniel)


一种好的方法是使用作弊的宝石(如果您使用Ruby)。这是方便的,社区驱动的CLI,可用于许多实用程序的备忘单(与语言无关)。给它一个尝试
Kedar Mhaswade 2015年

25
lsof -i :port 

会告诉您特定端口上正在侦听哪些程序。


1
它不仅限于“侦听”,因此,如果您指定lsof -i :8080并且您有一堆连接到端口8080上的代理的进程,那么您也会得到这些。
马特·伯恩

14
lsof +D /some/directory

将递归显示在目录中打开的所有文件。+ d仅代表顶层。

当您有较高的IO等待百分比(与在特定FS上使用相关并且希望查看哪些进程正在消耗您的io)时,此功能很有用。


13

lsof -i将提供打开的网络套接字的列表。该-n选项将阻止DNS查找,当您的网络连接缓慢或不可靠时,此选项很有用。


5
lsof -i显示你插口,您可以访问你的命名空间(以及被认为是通过内省“互联网”插座,不只是任何类型的网络插座)。否则,“ sock”类型的句柄将不会显示在列表中。
尼克·巴斯汀,

13

查看正在运行的应用程序或守护程序打开了哪些文件:

lsof -p pid

其中pid是应用程序或守护程序的进程ID。


10
lsof +f -- /mountpoint

使用在/ mountpoint挂载的挂载文件列出进程。对于查找使用已安装的USB棒或CD / DVD的哪个进程特别有用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.