lsof(list open files)是乙個列出當前系統開啟檔案的工具。在linux環境下,任何事物都是以檔案的形式存在,通過檔案不僅可以訪問常規資料,還可以訪問網路連線和硬體。所以,如傳輸控制協議(tcp)和使用者資料報協議(udp)套接字等,系統在後台都為該應用程式分配了乙個檔案描述符,無論這個檔案的本質如何,該檔案描述符為應用程式與基礎作業系統之間的互動提供了通用介面。因為應用程式開啟檔案的描述符列表提供了大量關於這個應用程式本身的資訊,因此通過lsof工具能夠檢視這個列表對系統監測以及排錯是很有幫助的。
圖1:lsof示例
在終端下輸入lsof即可顯示系統開啟的檔案,因為lsof需要訪問核心記憶體和各種檔案,所以必須以root使用者的身份執行它才能夠充分地發揮功能。
如上圖1是乙個lsof的輸出例子,每行顯示乙個開啟的檔案,若不指定預設顯示所有程序開啟的所有檔案。
lsof輸出各列資訊的意義如下:
command:程序的名稱
pid:程序識別符號
user:程序所有者
fd:檔案描述符,應用程式通過檔案描述符識別該檔案,如cwd、txt等。
type:檔案型別,如:dir、reg等。
device:指定磁碟的名稱
size:檔案的大小
node:索引節點(檔案在磁碟上的標識)
name:開啟檔案的確切名稱
fd列中的檔案描述符cwd值表示應用程式的當前工作目錄,這是該應用程式啟動的目錄,除非它本身對這個目錄進行更改,txt型別的檔案是程式**,如應用程式二進位制檔案本身或共享庫。其次數值標識應用程式的檔案描述符,這是開啟該檔案時返回的乙個整數。與 fd 列相比,type 列則比較直觀。檔案和目錄分別稱為reg和dir。而chr和blk,分別表示字元和塊裝置;或者unix、fifo和ipv4,分別表示unix域套接字、先進先出(fifo)佇列和網際協議(ip)套接字。
下面是一些實用的命令:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
lsof
`
which
httpd`
//
那個程序在使用apache的可執行檔案
lsof
/etc/passwd
//
那個程序在占用
/etc/passwd
lsof
/dev/hda6
//
那個程序在占用hda6
lsof
/dev/cdrom
//
那個程序在占用光碟機
lsof
-c sendmail
//
檢視sendmail程序的檔案使用情況
lsof
-c courier -u ^zahn
//
顯示出那些檔案被以courier打頭的程序開啟,但是並不屬於使用者zahn
lsof
-p 30297
//
顯示那些檔案被pid為30297的程序開啟
lsof
-d
/tmp
顯示所有在
/tmp
資料夾中開啟的instance和檔案的程序。但是symbol檔案並不在列
lsof
-u1000
//
檢視uid是100的使用者的程序的檔案使用情況
lsof
-utony
//
檢視使用者tony的程序的檔案使用情況
lsof
-u^tony
//
檢視不是使用者tony的程序的檔案使用情況(^是取反的意思)
lsof
-i
//
顯示所有開啟的埠
lsof
-i:80
//
顯示所有開啟80埠的程序
lsof
-i -u
//
顯示所有開啟的埠和unix domain檔案
lsof
-i udp@[url]www.akadia.com:123
//
顯示那些程序開啟了到www.akadia.com的udp的123(ntp)埠的鏈結
lsof
-i [email protected]:
ftp
-r
//
不斷檢視目前
ftp
連線的情況(-r,
lsof
會永遠不斷的執行,直到收到中斷訊號,+r,
lsof
會一直執行,直到沒有檔案被顯示,預設是15s重新整理)
lsof
-i [email protected]:
ftp
-n
//lsof
-n 不將ip轉換為
hostname
,預設是不加上-n引數
可以使用lsof -i:埠號來檢視當前有哪些程式占用了某個埠。
linux lsof命令學習
1.lsof是什麼?lsof是linux下面乙個tool,用來列出當前系統中所開啟的檔案,這些檔案包括 正規檔案 目錄 管道 字元裝置 塊裝置 unix socket等等。2.那lsof有什麼作用呢?1 你的程式有沒有出現過open檔案失敗的情況?那我們可以通過lsof來檢視系統中已經 open了多...
Linux Lsof命令詳解
一般root使用者才能執行lsof命令,普通使用者可以看見 usr sbin lsof命令,但是普通使用者執行會顯示 permission denied 我總結一下lsof指令的用法 lsof abc.txt 顯示開啟檔案abc.txt的程序 lsof i 22 知道22埠現在執行什麼程式 lsof...
linux lsof命令詳解
lsof list open files 是乙個列出當前系統開啟檔案的工具。在linux環境下,任何事物都以檔案的形式存在,通過檔案不僅僅可以訪問常規資料,還可以訪問網路連線和硬體。所以如傳輸控制協議 tcp 和使用者資料報協議 udp 套接字等,系統在後台都為該應用程式分配了乙個檔案描述符,無論這...