生存指南

Han*_*son 101 unix sysadmin lsof

lsof是一个增强的强大的命令行实用程序,适用于unix系统.它列出了打开的文件,显示有关它们的信息.由于大多数内容都是unix系统上的文件,因此lsof可以为系统管理员提供大量有用的诊断数据.

有哪些使用lsof最常用和最有用的方法,以及使用哪些命令行开关?

小智 117

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

lsof -iTCP -i :port
lsof -i :22
Run Code Online (Sandbox Code Playgroud)

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

lsof -i@192.168.1.5
Run Code Online (Sandbox Code Playgroud)

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

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

lsof -i| grep LISTEN
Run Code Online (Sandbox Code Playgroud)

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

lsof -u daniel
Run Code Online (Sandbox Code Playgroud)

查看命令正在使用的文件和网络连接 -c

lsof -c syslog-ng
Run Code Online (Sandbox Code Playgroud)

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

lsof -p 10075
Run Code Online (Sandbox Code Playgroud)

-t选项只返回一个PID

lsof -t -c Mail
Run Code Online (Sandbox Code Playgroud)

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

kill -HUP $(lsof -t -c sshd)
Run Code Online (Sandbox Code Playgroud)

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

kill -9 $(lsof -t -u daniel)
Run Code Online (Sandbox Code Playgroud)


dvo*_*rak 25

lsof -i :port 
Run Code Online (Sandbox Code Playgroud)

会告诉你哪些程序正在侦听特定端口.


sie*_*sta 14

lsof +D /some/directory
Run Code Online (Sandbox Code Playgroud)

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

当您具有较高的IO等待%,与在特定FS上使用相关并希望查看哪些进程正在咀嚼您的io时,这非常有用.


Joh*_*kin 13

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

  • `lsof -i`将*仅*显示您在命名空间中可以访问的套接字(通过内省被视为"互联网"套接字,而不仅仅是任何类型的网络套接字).否则,'sock'类型的句柄将不会显示在列表中. (5认同)

Chr*_*ris 13

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

lsof -p pid
Run Code Online (Sandbox Code Playgroud)

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


mas*_*mas 10

lsof +f -- /mountpoint
Run Code Online (Sandbox Code Playgroud)

使用挂载在/ mountpoint上的挂载上的文件列出进程.特别适用于查找哪些进程使用已安装的USB记忆棒或CD/DVD.