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。