lsof 命令使用

2021-07-25 12:05:39 字數 3328 閱讀 5774

lsof(list open files)是乙個列出當前系統開啟檔案的工具。

在linux環境下,任何事物都以檔案的形式存在,通過檔案不僅僅可以訪問常規資料,還可以訪問網路連線和硬體。

所以如傳輸控制協議 (tcp) 和使用者資料報協議 (udp) 套接字等,系統在後台都為該應用程式分配了乙個檔案描述符,無論這個檔案的本質如何,該檔案描述符為應用程式與基礎作業系統之間的互動提供了通用介面。

因為應用程式開啟檔案的描述符列表提供了大量關於這個應用程式本身的資訊,因此通過lsof工具能夠檢視這個列表對系統監測以及排錯將是很有幫助的。

lsof 命令可顯示系統開啟的檔案,因為 lsof 需要訪問核心記憶體和各種檔案,所以必須以 root 使用者的身份執行它才能夠充分地發揮其功能。

常用引數說明:

-? -h #顯示出lsof的幫助資訊

-c c #顯示出以字元或字串c開頭的命令程式開啟的檔案,如$lsof -c init

+d s #在資料夾s下搜尋,此引數不會繼續深入搜尋此資料夾。如顯示在/usr/local下被程式開啟的檔案:$lsof +d /usr/local +d d 同上,但是會以該檔案為基礎往下全部搜尋,這樣花費較大的cpu時 間,請謹慎使用

-i #用以監聽有關的任何符合的位址,若沒有相關位址被指定,則監聽全部

用法: lsof -i [46][protocol][@hostname|hostaddr][:serivce|port]

說明: 4 6  ipv4 或 ipv6

protocol tcp or udp

hostname internet host name

hostaddr ipv4位址

service /etc/service中的service name

port 埠號

-l #此引數禁止將user id 轉換為登入的名稱,預設是登入名稱

-n #不將ip位址轉換為hostname,預設是轉換的

-p s #以pid作為顯示的依據

+|-r [t] #控制lsof不斷重複執行,t為15秒,也就是說每隔15秒再重複執行 +r 一直執行,直到沒有檔案被顯示 -r 永遠不斷的執行,直到收到中斷訊號(ctrl+ c)

-r #此引數增列出pid的子程式,也就是ppid

-s #列出檔案的大小,若該檔案沒有大小,則留下空白

-v #顯示lsof的版本資訊

找出誰在使用某個檔案

[root@localhost ~]# lsof /usr/local/nginx/sbin/nginx

command pid user fd type device size/off node name

nginx 2474 root txt reg 253,0 5871997 2765334 /usr/local/nginx/sbin/nginx

nginx 2479 www txt reg 253,0 5871997 2765334 /usr/local/nginx/sbin/nginx

nginx 2480 www txt reg 253,0 5871997 2765334 /usr/local/nginx/sbin/nginx

nginx 2481 www txt reg 253,0 5871997 2765334 /usr/local/nginx/sbin/nginx

nginx 2482 www txt reg 253,0 5871997 2765334 /usr/local/nginx/sbin/nginx

列出某個使用者開啟的所有檔案

[root@localhost root]# lsof -u www |more #單個使用者

[root@localhost root]# lsof -u www,root #多個使用者

查詢某個程式開啟的所有檔案

列出所有由某個pid對應的程序開啟的檔案

[root@localhost root]# lsof -p 3738

列出所有網路連線

[root@localhost root]# lsof -i

列出所有tcp網路連線

[root@localhost root]# lsof -i tcp

找到使用某個埠的程序

lsof命令使用示例

lsof 命令是什麼?可以列出被程序所開啟的檔案的資訊。被開啟的檔案可以是 1.普通的檔案 2.目錄 3.網路檔案系統的檔案 4.字元裝置檔案 5.函式 共享庫 6.管道,命名管道 7.符號鏈結 8.底層的 socket 字流,網路 socket unix 網域名稱socket 怎樣使用 lsof ...

lsof命令的使用

今天發現了這個命令lsof感覺蠻有用的尤其是對伺服器管理的人來說應該更加有用.這個命令可以看程序所需要開啟的檔案.當在lsof後邊沒有跟任何引數時,該命令將會列出當前系統中被所有程序開啟的所有檔案 下邊這幾個命令指出開啟某檔案的程序 lsof which httpd 那個程序在使用apache的可執...

lsof命令使用整理

lsof usage abhlnnooprstuvv c c d s d d f cgg f f g s i i l l m o o p s r t s t t t u s w x fl names 1.列出所有開啟的檔案 lsof備註 如果不加任何引數,就會開啟所有被開啟的檔案,建議加上一下引數來...