Linux-文件分析-lsof


lsof(list open files)


 lsof 需要訪問核心內存和各種文件,所以必須以 root 用戶的身份運行它才能夠充分地發揮其功能。
一. 參數分析

lsof輸出各列信息的意義如下:


type 列則比較直觀。文件和目錄分別稱爲 reg 和 dir。而chr 和 blk,分別表示字符和塊設備;或者 unix、fifo 和 ipv4,分別表示 unix 域套接字、先進先出 (fifo) 隊列和網際協議 (ip) 套接字。

二. 常用命令
lsof 常見的用法是查找應用程序打開的文件的名稱和數目。可用於查找出某個特定應用程序將日誌數據記錄到何處,或者正在跟蹤某個問題。例如,linux限制了進程能夠打開文件的數目。通常這個數值很大,所以不會產生問題,並且在需要時,應用程序可以請求更大的值(直到某個上限)。如果你懷疑應用程序耗盡了文件描述符,那麼可以使用 lsof 統計打開的文件數目,以進行驗證。

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.test.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參數


三. 其他
tcpdump程序
tcpdump一邊從網絡讀入分組一邊顯示關於這些分組的大量信息。它還能夠只顯示與所指定的準則匹配的那些分組。

netstat程序
netstat服務於多個目的:
(1)展示網絡端點的狀態。
(2)展示某個主機上各個接口所屬的多播組。
(3)使用-s選項顯示各個協議的統計信息。
(4)使用-r選項顯示路由表或使用-i選項顯示接口信息。

lsof程序
名字lsof代表“list open files”,即列出打開的文件。
lsof的常見用途之一是找出哪個進程在指定的IP地址或端口號上打開了一個套接口。netstat告訴我們哪些IP地址和端口正在使用中以及各個TCP連接的狀態,卻沒有標識相應的進程。lsof彌補這個缺陷。



相關文章:
Linux 命令神器:lsof 入門 https://linux.cn/article-4099-1.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章