108

lsof 是一个非常强大的用于 unix 系统的命令行实用程序。它列出打开的文件,显示有关它们的信息。而且由于大多数东西都是 unix 系统上的文件,lsof 可以为系统管理员提供大量有用的诊断数据。

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

4

6 回答 6

120

显示与给定相关的所有网络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 forLISTEN显示您的系统正在等待连接的端口:

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)
于 2008-11-26T07:42:47.107 回答
27
lsof -i :port 

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

于 2008-09-19T22:53:39.450 回答
14

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

于 2008-09-19T22:51:41.483 回答
14
lsof +D /some/directory

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

当您对 IO 有很高的等待百分比时,这很有用,与在特定 FS 上使用相关,并且想要查看哪些进程正在咀嚼您的 io。

于 2012-07-15T19:31:36.690 回答
13

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

lsof -p pid

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

于 2008-09-19T22:52:54.930 回答
10
lsof +f -- /mountpoint

列出使用挂载在 /mountpoint 的挂载文件的进程。对于查找哪些进程正在使用已安装的 USB 记忆棒或 CD/DVD 尤其有用。

于 2009-07-05T17:48:32.253 回答