lsof 快速起步
查看對某個檔案的使用方式
查看哪些進程對某個檔案進行了調用:
$ lsof /etc/passwd
查看對檔案系統的使用
/tmp目錄被垃圾檔案塞滿了, 但是, 用ls 又看不到太大檔案, 誰乾的?
$ lsof /tmp
尋找開啟,但是不能串連的檔案
一個進程開啟一個檔案, 然後將其設為 unlinked 狀態, 則此檔案資源仍能被進程使用, 但是其訪問路徑已經被刪除了. 因此, 使用ls不能將其列出. 只有當進程結束時, 才能釋放檔案佔用的資源
尋找unlinked 檔案, 選項 +L, 作用: 列出開啟檔案的串連數
$lsof +L
指定串連數的上限 $lsof +L1
同時指定檔案系統, 則需要使用 -a(AND) 選項
$ lsof -a +L1 /home
無法卸載
查看誰令mount的分區無法卸載
$ lsof <file_system_name>
查看監聽socket
查看網路服務
$ lsof -i
查看某個網路連接
$ lsof -i@aaa.bbb.ccc
$ lsof -iTCP@aaa.bbb.ccc: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 <PID>
使用命令名稱
$ lsof -c <first_characters_of_command_name_that_interest_you>
$ lsof -c sendmail
查看誰在使用裝置檔案
$ lsof /dev/hda6
查看某個使用者的操作
$ id -u tony
1000
$ lsof -u1000 or $ lsof -utony
$ lsof -u^tony * 則是取反的意思*