簡介:
lsof可以列出某個程序開啟的所有檔案資訊。開啟的檔案可能是普通的檔案,目錄,nfs檔案,塊檔案,字元檔案,共享庫,常規管道,明明管道,符號鏈 接,socket流,網路socket,unix域socket,以及其它更多。因為unix系統中幾乎所有東西都是檔案,你可以想象lsof該有多有用。
lsof的輸出:
fd 和 type 列的含義最為模糊,它們提供了關於檔案如何使用的更多資訊。
fd 列表示檔案描述符,應用程式通過檔案描述符識別該檔案。type 列提供了關於檔案格式的更多描述。
我們來具體研究一下檔案描述符列,上面出現了三種不同的值。cwd 值表示應用程式的當前工作目錄,這是該應用程式啟動的目錄,除非它本身對這個目錄進行更改。txt 型別的檔案是程式**,如應用程式二進位制檔案本身或共享庫,再比如本示例的列表中顯示的 init 程式。最後,數值表示應用程式的檔案描述符,這是開啟該檔案時返回的乙個整數。在最後一行中,您可以看到使用者正在使用 vim 編輯 /root/1.txt,其檔案描述符為 3。u 表示該檔案被開啟並處於讀取/寫入模式,而不是唯讀 (r) 或只寫 (w) 模式。有一點不是很重要但卻很有幫助,初始開啟每個應用程式時,都具有三個檔案描述符,從 0 到 2,分別表示標準輸入、輸出和錯誤流。正因為如此,大多數應用程式所開啟的檔案的 fd 都是從 3 開始。
與 fd 列相比,type 列則比較直觀。根據具體作業系統的不同,您會發現將檔案和目錄稱為 reg 和 dir(在 solaris 中,稱為 vreg 和 vdir)。其他可能的取值為 chr 和 blk,分別表示字元和塊裝置;或者 unix、fifo 和 ipv4,分別表示 unix 域套接字、先進先出 (fifo) 佇列和網際協議 (ip) 套接字。
用法:
列出有所開啟的檔案:#losf
找出誰在使用檔案
#lsof /root/.bashrc遞迴查詢某個目錄中所有開啟的檔案
# lsof +d /usr/lib
加上+d引數,lsof會對指定目錄進行遞迴查詢,注意這個引數要比grep版本慢
# lsof | grep '/usr/lib'
之所以慢是因為+d首先查詢所有的檔案,然後一次性輸出
列出某個使用者代開的檔案
#lsof -u root
列出除root使用者外的所有使用者開啟的檔案
# lsof -u ^root
列出某個程式開啟的所有檔案
可以只寫程序的頭幾個字母
#lsof -c ht
這就會列出以ht開頭的程序開啟的檔案
列出某個pid對應的程序所開啟的檔案
#lsof -p 489列出所有網路連線
#lsof -i
lsof的-i選項可以列出所有開啟了網路套接字(tcp和udp)的程序
列出所有tcp網路連線
#lsof -i tcp
找出某個埠的程序
#lsof -i :25
找出某個tcp埠的程序
#lsof -i tcp:80
找到某個使用者的所有網路連線
# lsof -a -u hacker -i
-a引數可以將多個選項的組合條件由或變為與,使用-a將-u和-i選項組合可以讓lsof列出某個使用者的所有網路行為
輸出使用某些資源的程序pid
# lsof -t -i
-t選項輸出程序的pid,你可以將它和-i選項組合輸出使用某個埠的程序的pid,下面的命令將會殺掉所有使用網路的程序:
# kill -9 `lsof -t -i`
迴圈列出檔案
# lsof -r 1
-r選項讓lsof可以迴圈列出檔案直到被中斷,引數1的意思是每秒鐘重複列印一次,這個選項最好同某個範圍比較小的查詢組合使用,比如用來監測網路活動:
# lsof -r 1 -u john -i -a
來自:www.cszhi.com
如何檢視開啟指定檔案的程序
解決方案二 借助 proc 相關鏈結 有時候你會發現某些檔案在不停的增長嚴重占用了磁碟空間,你想找到罪魁禍首是誰,該怎麼做呢?涉及到的命令 fuser 本部分以archlinux系統為例 在archlinux上,fuser命令是屬於psmisc包中的,因此執行下面命令安裝 sudo pacman s...
Linux檢視 開啟 關閉防火牆操作
centos6自帶的防火牆是iptables,centos7自帶的防火牆是firewall。iptables 用於過濾資料報,屬於網路層防火牆。firewall 底層還是使用 iptables 對核心命令動態通訊包過濾的,簡單理解就是firewall是centos7下管理iptables的新命令。1...
檢視開啟了LYNC的使用者資訊
檢視開啟了lync的使用者資訊 查詢幫助資訊的方式 get help get csaduser full 下面是具體檢視使用者的sip位址 顯示名稱 upn名稱資訊 get csaduser select object displayname,sipaddress,userprincipalname...