Linux 有用的命令之 - lsof(轉)

BSDLite發表於2007-08-15
Linux 有用的命令之 - lsof(轉)[@more@]LSOF是針對Unix的診斷和分析工具,它能顯示出由系統里正在執行的程式所開啟的檔案,也能顯示出每一個程式的通訊socket。

Contents

* 檢視對某個檔案的使用情況
* 檢視對檔案系統的使用
o 查詢開啟,但是不能連線的檔案

* 無法解除安裝
* 檢視監聽socket
* 檢視某個網路連線
* 識別 Netstat 連線
* 查詢針對某個命令開啟的檔案
* 檢視某個使用者的操作
* 更多資訊
* Bibliography

檢視對某個檔案的使用情況

檢視哪些程式對某個檔案進行了呼叫:

$ lsof /etc/passwd

檢視對檔案系統的使用

/tmp目錄被垃圾檔案塞滿了, 但是, 用ls 又看不到太大檔案, 誰幹的?

$ lsof /tmp

查詢開啟,但是不能連線的檔案

一個程式開啟一個檔案, 然後將其設為 unlinked 狀態, 則此檔案資源仍能被程式使用, 但是其訪問路徑已經被刪除了. 因此, 使用ls不能將其列出. 只有當程式結束時, 才能釋放檔案佔用的資源

查詢unlinked 檔案, 選項 +L, 作用: 列出開啟檔案的連線數

$lsof +L

指定連線數的上限 $lsof +L1

同時指定檔案系統, 則需要使用 -a(AND) 選項

$ lsof -a +L1 /home

無法解除安裝

檢視誰令mount的分割槽無法解除安裝

$ lsof

檢視監聽socket
檢視網路服務

$ lsof -i

檢視某個網路連線

$ lsof

$ lsof :ftp-data *指定協議*

$ lsof -i4 *指定IP版本*

$ lsof -i6

識別 Netstat 連線
例如: netstat -p -t -n 的輸出為:

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 218.56.203.246:52634 202.109.72.72:7000 ESTABLISHED

則可以: tony@tony:~$ lsof -iTCP@202.109.72.72:7000

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME

xchat 4505 tony 12u IPv4 5775 TCP 218.56.203.246:52634->202.109.72.72:afs3-fileserver (ESTABLISHED)

查詢針對某個命令開啟的檔案

使用命令的PID

$ lsof -p

使用命令名稱

$ lsof -c

$ lsof -c sendmail

檢視誰在使用裝置檔案

$ lsof /dev/hda6
檢視某個使用者的操作

$ id -u tony

1000

$ lsof -u1000 or $ lsof -utony

$ lsof -u^tony * 則是取反的意思*

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

相關文章