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显示基于主机和端口的连接
grep
ping 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)
您还可以使用-t
with-u
杀死用户打开的所有内容
kill -9 $(lsof -t -u daniel)
lsof -i :port
将告诉您哪些程序正在侦听特定端口。
lsof -i
将提供打开的网络套接字列表。该-n
选项将阻止 DNS 查找,这在您的网络连接缓慢或不可靠时很有用。
lsof +D /some/directory
将递归显示目录中打开的所有文件。+d 仅用于顶层。
当您对 IO 有很高的等待百分比时,这很有用,与在特定 FS 上使用相关,并且想要查看哪些进程正在咀嚼您的 io。
查看正在运行的应用程序或守护程序打开了哪些文件:
lsof -p pid
其中pid是应用程序或守护程序的进程 ID。
lsof +f -- /mountpoint
列出使用挂载在 /mountpoint 的挂载文件的进程。对于查找哪些进程正在使用已安装的 USB 记忆棒或 CD/DVD 尤其有用。