2008-09-19 38 views
85

lsof是unix系統中一個功能強大的命令行工具。它列出了打開的文件,顯示關於它們的信息。而且由於大多數所有東西都是unix系統上的文件,lsof可以爲系統管理員提供大量有用的診斷數據。lsof生存指南

什麼是使用lsof最常用和最實用的方法,以及使用哪種命令行開關?

回答

10

lsof -i將提供開放網絡套接字列表。 -n選項將阻止DNS查找,這在您的網絡連接速度較慢或不可靠時非常有用。

+3

`lsof -i`將* only *顯示您可以在您的名稱空間中訪問的套接字(並且通過內省將它們視爲「internet」套接字,而不僅僅是任何類型的網絡套接字)。否則,'sock'類型的句柄將不會顯示在列表中。 – 2013-08-06 21:17:46

10

查看哪些文件正在運行的應用程序或守護程序已經打開:

lsof -p pid 

PID是應用程序或守護進程的進程ID。

17
lsof -i :port 

會告訴你什麼程序正在特定端口上偵聽。

+1

它不限於「監聽」,所以如果你指定`lsof -i:8080`,並且你有一堆進程連接到端口8080上的代理服務器,你也可以得到它們。 – 2014-10-01 01:57:49

98

若要顯示所有網絡相關的給定port

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

要顯示一個特定的主機連接,使用基於主機上@host

lsof [email protected] 

顯示連接和使用@host:port 端口lsof [email protected]。5:22

grep平爲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) 
+0

來源:http://danielmiessler.com/study/lsof/ – 2014-10-20 07:34:44

7
lsof +f -- /mountpoint 

列出使用文件的安裝安裝在/掛載點的過程。特別適用於查找使用安裝的USB記憶棒或CD/DVD的過程。

10
lsof +D /some/directory 

將以遞歸方式顯示目錄中打開的所有文件。 + d僅用於頂層。

當你有很高的IO等待百分比時,這對於在特定的FS上使用相關,並希望看到哪些進程正在咀嚼你的io,這非常有用。