lsof生存指南

lsof是unix系统中function强大的命令行工具。 它列出了打开的文件,显示关于它们的信息。 而且由于大多数所有东西都是unix系统上的文件,lsof可以为系统pipe理员提供大量有用的诊断数据。

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

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

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

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

 lsof -i@192.168.1.5 

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

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

 lsof -i| grep LISTEN 

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

 lsof -u daniel 

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

 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将提供一个开放的networking套接字列表。 -n选项将防止DNS查找,这在networking连接速度慢或不可靠时非常有用。

 lsof +D /some/directory 

将recursion地显示目录中打开的所有文件。 + d只是顶级。

当你有很高的IO等待时间时,这个function非常有用,这个function与在某个特定的FS上使用相关,并且希望看到哪些进程正在咀嚼你的io。

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

 lsof -p pid 

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

 lsof +f -- /mountpoint 

列出使用挂载在/ mountpoint上的文件的进程。 特别有用的是找出哪个进程正在使用已安装的U盘或CD / DVD。