lsof 命令
轉載自:http://www.cnblogs.com/peida/archive/2013/02/26/2932972.html
1、說明
lsof(list open files)是一個列出當前系統開啟檔案的工具。在linux環境下,任何事物都以檔案的形式存在,通過檔案不僅僅可以訪問常規資料,還可以訪問網路連線和硬體。所以如傳輸控制協議 (TCP) 和使用者資料包協議 (UDP) 套接字等,系統在後臺都為該應用程式分配了一個檔案描述符,無論這個檔案的本質如何,該檔案描述符為應用程式與基礎作業系統之間的互動提供了通用介面。因為應用程式開啟檔案的描述符列表提供了大量關於這個應用程式本身的資訊,因此通過lsof工具能夠檢視這個列表對系統監測以及排錯將是很有幫助的。
2、命令格式
lsof [引數][檔案]
3、命令功能
用於檢視你程式開打的檔案,開啟檔案的程式,程式開啟的埠(TCP、UDP)。找回/恢復刪除的檔案。是十分方便的系統監視工具,因為 lsof 需要訪問核心記憶體和各種檔案,所以需要root使用者執行。
lsof開啟的檔案可以是:
- 普通檔案
- 目錄
- 網路檔案系統的檔案
- 字元或裝置檔案
- (函式)共享庫
- 管道,命名管道
- 符號連結
- 網路檔案(例如:NFS)
- file、網路socket,unix域名socket)
- 還有其它型別的檔案,等等
4、命令引數
命令引數:
- -a 列出開啟檔案存在的程式
- -c<程式名> 列出指定程式所開啟的檔案
- -g 列出GID號程式詳情
- -d<檔案號> 列出佔用該檔案號的程式
- +d<目錄> 列出目錄下被開啟的檔案
- +D<目錄> 遞迴列出目錄下被開啟的檔案
- -n<目錄> 列出使用NFS的檔案
- -i<條件> 列出符合條件的程式。(4、6、協議、:埠、 @ip )
- -p<程式號> 列出指定程式號所開啟的檔案
- -u 列出UID號程式詳情
- -h 顯示幫助資訊
- -v 顯示版本資訊
5、使用例項
5.1 無任何引數
lsof
Out:
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,2 259 64 /
systemd 1 root rtd DIR 253,2 259 64 /
systemd 1 root txt REG 253,2 1523624 18772623 /usr/lib/systemd/systemd
systemd 1 root mem REG 253,2 20040 1389 /usr/lib64/libuuid.so.1.3.0
systemd 1 root mem REG 253,2 256960 2777 /usr/lib64/libblkid.so.1.1.0
systemd 1 root mem REG 253,2 90664 1385 /usr/lib64/libz.so.1.2.7
systemd 1 root mem REG 253,2 157424 1300 /usr/lib64/liblzma.so.5.2.2
systemd 1 root mem REG 253,2 23968 1528 /usr/lib64/libcap-ng.so.0.0.0
systemd 1 root mem REG 253,2 19888 1555 /usr/lib64/libattr.so.1.1.0
systemd 1 root mem REG 253,2 19776 1237 /usr/lib64/libdl-2.17.so
systemd 1 root mem REG 253,2 398264 1371 /usr/lib64/libpcre.so.1.2.0
systemd 1 root mem REG 253,2 2127336 1224 /usr/lib64/libc-2.17.so
systemd 1 root mem REG 253,2 144792 1264 /usr/lib64/libpthread-2.17.so
systemd 1 root mem REG 253,2 88720 5041 /usr/lib64/libgcc_s-4.8.5-20150702.so.1
systemd 1 root mem REG 253,2 44448 1268 /usr/lib64/librt-2.17.so
systemd 1 root mem REG 253,2 265008 2925 /usr/lib64/libmount.so.1.1.0
systemd 1 root mem REG 253,2 91792 1765 /usr/lib64/libkmod.so.2.2.10
systemd 1 root mem REG 253,2 122984 1527 /usr/lib64/libaudit.so.1.0.0
systemd 1 root mem REG 253,2 61672 2855 /usr/lib64/libpam.so.0.83.1
systemd 1 root mem REG 253,2 20024 1559 /usr/lib64/libcap.so.2.22
systemd 1 root mem REG 253,2 155784 1382 /usr/lib64/libselinux.so.1
systemd 1 root mem REG 253,2 164112 1217 /usr/lib64/ld-2.17.so
systemd 1 root mem REG 253,2 44725 37811623 /etc/selinux/targeted/contexts/files/file_co
說明
lsof輸出各列資訊的意義如下:
- COMMAND:程式的名稱
- PID:程式識別符號
- PPID:父程式識別符號(需要指定-R引數)
- USER:程式所有者
- PGID:程式所屬組
- FD:檔案描述符,應用程式通過檔案描述符識別該檔案。如cwd、txt等
5.2 檢視誰正在使用某個檔案
檢視誰正在使用某個檔案,也就是說查詢某個檔案相關的程式
ls /bin/bash
Out:
lsof /bin/bash
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
bash 24159 root txt REG 8,2 801528 5368780 /bin/bash
bash 24909 root txt REG 8,2 801528 5368780 /bin/bash
bash 24941 root txt REG 8,2 801528 5368780 /bin/bash
5.3 遞迴檢視某個目錄的檔案資訊
lsof +D dir
Out:
lsof +D /xcloud-parrot/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dnsApi 882 root txt REG 253,2 12269800 2569184 /xcloud-parrot/dnsApi/bin/dnsApi
dnsApi 882 root 3u REG 253,2 2710 19112944 /xcloud-parrot/dnsApi/var/dnsApi.log
dnsApi 882 root 5u REG 253,2 0 19114009 /xcloud-parrot/dnsApi/var/gin.log
vim 2994 root 4u REG 253,2 12288 54272069 /xcloud-parrot/dnsMonitor/config/.dnsMonitor.yaml.swp
zsh 6704 root cwd DIR 253,2 87 36546656 /xcloud-parrot/dnsIPv6Scheduler2/config
vim 26719 root 4u REG 253,2 12288 2914545 /xcloud-parrot/dnsScheduler/config/.dnsScheduler.toml.swo
說明:lsof dir 不遞迴列車
5.4、列出某個使用者開啟的檔案資訊
lsof -u username
5.5 列出某個程式程式所開啟的檔案資訊
ls -c mysql
-c 選項將會列出所有以mysql這個程式開頭的程式的檔案,其實你也可以寫成 lsof | grep mysql, 但是第一種方法明顯比第二種方法要少打幾個字元了
5.6 列出多個程式多個開啟的檔案資訊
lsof -c mysql -c apache
5.7 列出某個使用者以及某個程式所開啟的檔案資訊
lsof -u test -c mysql
5.8 列出除了某個使用者外的被開啟的檔案資訊
lsof -u ^root
^這個符號在使用者名稱之前,將會把是root使用者開啟的程式不讓顯示
5.9 通過某個程式號顯示該進行開啟的檔案
lsof -p 1 (1是程式號)
5.10 列出多個程式號對應的檔案資訊
lsof -p 1,2,3
5.11 列出除了某個程式號,其他程式號所開啟的檔案資訊
lsof -p ^1
5.12 列出所有的網路連線
lsof -i
5.13 列出所有tcp 網路連線資訊
lsof -i tcp
5.14 列出所有udp網路連線資訊
lsof -i udp
5.15 列出誰在使用某個埠
lsof -i :3306
5.16 列出誰在使用某個特定的udp埠
lsof -i udp:55
5.17 列出誰在使用某個特定的tdp埠
ls -i tcp:55
5.18 列出某個使用者的所有活躍的網路埠
lsof -a -u root -i
5.19 列出所有的網路檔案系統
loof -N
5.20 某個使用者組所開啟的檔案資訊
lsof -g 5555
5.21 根據檔案描述列出對應的檔案資訊
lsof -d description(like 2)
例如:lsof -d txt
例如:lsof -d 1
例如:lsof -d 2
說明
0表示標準輸入,1表示標準輸出,2表示標準錯誤,從而可知:所以大多數應用程式所開啟的檔案的 FD 都是從 3 開始
5.22 根據檔案描述範圍列出檔案資訊
lsof -d 2-3
5.23 列出COMMAND列中包含字串" sshd",且檔案描符的型別為txt的檔案資訊
lsof -c sshd -a -d tex
5.24 列出被程式號為1234的程式所開啟的所有IPV4 network files
lsof -i 4 -a -p 1234
5.25 列出目前連線主機peida.linux上埠為:20,21,22,25,53,80相關的所有檔案資訊,且每隔3秒不斷的執行lsof指令
lsof -i @peida.linux:20,21,22,25,53,80 -r 3
相關文章
- lsof命令
- Linux命令--lsofLinux
- lsof命令簡介
- linux每日命令(39):lsof命令Linux
- lsof命令學習筆記筆記
- Linux lsof命令如何使用?其作用是什麼?Linux
- Linuxt恢復誤刪內容:命令lsof、extundelete工具Linuxdelete
- lsof(zt)
- Linux系統中的lsmod、lsof、lspci、lsscsi命令及例項Linux
- lsof |grep deleted 釋放磁碟空間delete
- [20201103]lsof顯示link=0的檔案.txt
- 還在佔用儲存的程式lsof grep deleted;delete
- MySQL:為什麼lsof會看到這麼多臨時檔案MySql
- 從 lsof 開始,深入理解 Linux 虛擬檔案系統Linux
- Linux命令之rz命令與sz命令Linux
- 【Linux命令】grep命令Linux
- Linux命令—–CP命令Linux
- windows命令列命令Windows命令列
- cmd 命令列 命令命令列
- git命令列命令Git命令列
- Linux系統中的管道命令、grep命令、sed命令和awk命令Linux
- Linux命令(1)——xargs命令Linux
- Linux命令之lldptool命令Linux
- java命令--jmap命令使用Java
- Linux命令篇 - sed 命令Linux
- Linux命令篇 - grep 命令Linux
- Linux命令篇 - tar 命令Linux
- linux每日命令(5):mkdir命令Linux
- linux-mysql命令,tomcat命令LinuxMySqlTomcat
- linux每日命令(2):cd命令Linux
- linux每日命令(18):whereis命令Linux
- linux每日命令(12):nl命令Linux
- linux每日命令(10):touch命令Linux
- linux每日命令(11):cat命令Linux
- linux每日命令(38):iostat命令LinuxiOS
- linux每日命令(32):gzip命令Linux
- linux每日命令(35):grep命令Linux
- linux每日命令(36):wc命令Linux