【发布时间】:2014-01-25 15:20:49
【问题描述】:
lsof 是一个非常强大的用于 unix 系统的命令行实用程序。它列出打开的文件,显示有关它们的信息。由于在 unix 系统上几乎所有内容都是文件,因此 lsof 可以为系统管理员提供大量有用的诊断数据。
使用 lsof 的一些最常见和最有用的方法是什么,以及为此使用了哪些命令行开关?
【问题讨论】:
lsof 是一个非常强大的用于 unix 系统的命令行实用程序。它列出打开的文件,显示有关它们的信息。由于在 unix 系统上几乎所有内容都是文件,因此 lsof 可以为系统管理员提供大量有用的诊断数据。
使用 lsof 的一些最常见和最有用的方法是什么,以及为此使用了哪些命令行开关?
【问题讨论】:
显示与给定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)
您还可以使用 -t 和 -u 来杀死用户打开的所有内容
kill -9 $(lsof -t -u daniel)
【讨论】:
lsof -i :port
会告诉您哪些程序正在侦听特定端口。
【讨论】:
lsof -i :8080 并且你有一堆进程连接到端口 8080 上的代理,你也会得到这些。
lsof -i 将提供打开的网络套接字列表。 -n 选项将阻止 DNS 查找,这在您的网络连接缓慢或不可靠时很有用。
【讨论】:
lsof -i 将仅向您显示您可以在您的命名空间中访问的套接字(并且通过自省被视为“互联网”套接字,而不仅仅是任何类型的网络)插座)。否则 'sock' 类型的句柄将不会显示在列表中。
lsof +D /some/directory
将递归显示目录中打开的所有文件。 +d 仅用于顶层。
当您对 IO 有较高的等待百分比时,这很有用,与在特定 FS 上的使用相关,并且想要查看哪些进程正在占用您的 io。
【讨论】:
查看正在运行的应用程序或守护程序打开了哪些文件:
lsof -p pid
其中 pid 是应用程序或守护程序的进程 ID。
【讨论】:
lsof +f -- /mountpoint
列出使用挂载在 /mountpoint 上的文件的进程。对于查找哪些进程正在使用已安装的 USB 记忆棒或 CD/DVD 非常有用。
【讨论】: