lsof命令小結

risingsunczl發表於2010-01-03
lsof命令小結[@more@]
lsof是一個用來顯示被開啟的檔案的強大而有用的工具。在Unix系統中,任何事物都是檔案(everything is a file),pipe是檔案,IP sockets是檔案,unix sockets是檔案,目錄是檔案,裝置是檔案,inodes是檔案。

一些有用的例子:

當在lsof後邊沒有跟任何引數時,該命令將會列出當前系統中被所有程式開啟的所有檔案

lsof|nl #nl命令列印出行號


下邊這幾個命令指出開啟某檔案的程式

lsof `which httpd` #那個程式在使用apache的可執行檔案
lsof /etc/passwd #那個程式在佔用/etc/passwd
lsof /dev/hda6 #那個程式在佔用hda6
lsof /dev/cdrom #那個程式在佔用光碟機

下邊將會列印出佔用httpd可執行檔案的程式的程式號(僅僅是程式號,在編寫shell指令碼是有用)
lsof -t `which httpd`


顯示出那些檔案被以k打頭的程式名的程式開啟,以bash打頭,和以init打頭:
lsof -c k
lsof -c bash
lsof -c init

顯示出那些檔案被以courier打頭的程式開啟,但是並不屬於使用者‘zahn’
lsof -c courier -u ^zahn

顯示被zahn和apache開啟的檔案
lsof -u apache,zahn

顯示那些檔案被pid為30297的程式開啟:
lsof +p 30297

顯示所有在/tmp資料夾中開啟的instance和檔案的程式。但是symbol檔案並不在列
lsof -D /tmp

顯示所有開啟的埠
lsof -i
顯示所有開啟80埠的程式
lsof -i:80

顯示所有開啟的埠和UNIX domain檔案:
lsof -i -U

顯示那些程式開啟了到的UDP的123(ntp)埠的連結:
lsof -iUDP@

----------------------------------------------------
translated from @

thank 寂寞烈火 for the reason of
-----------------------------------------------------
lsof還有很多引數,如果能夠熟練使用將會對日常的系統管理非常有用。希望大家把一些還知道得技巧加以補充

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/653579/viewspace-1030205/,如需轉載,請註明出處,否則將追究法律責任。