unix linux常用網路命令系列 lsof

2021-06-20 05:49:44 字數 4446 閱讀 4825

在 unix 環境中,檔案無處不在,這便產生了一句格言:「任何事物都是檔案」。通過檔案不僅僅可以訪問常規資料,通常還可以訪問網路連線和硬體。在有些情況下,當您使用ls請求目錄清單時,將出現相應的條目。在其他情況下,如傳輸控制協議 (tcp) 和使用者資料報協議 (udp) 套接字,不存在相應的目錄清單。但是在後台為該應用程式分配了乙個檔案描述符,無論這個檔案的本質如何,該檔案描述符為應用程式與基礎作業系統之間的互動提供了通用介面。

因為應用程式開啟檔案的描述符列表提供了大量關於這個應用程式本身的資訊,所以能夠檢視這個列表將是很有幫助的。完成這項任務的實用程式稱為lsof,它對應於「list open files」(列出開啟的檔案)。

可以被開啟的檔案可以是:1.普通的檔案,2.目錄  3.網路檔案系統的檔案,4.字元裝置檔案  5.(函式)共享庫  6.管道,命名管道 7.符號鏈結 8.底層的socket字流,網路socket,unix網域名稱........

一、檢視某埠是否被占用。

lsof -i :port, 檢視某埠是否被占用,若違背占用,則什麼都不顯示。 否則,會顯示占用該埠的程式的資訊。

舉例:minizhu@ubuntu:~$ lsof -i :8080

可見,8080埠被nc占用了。

二、檢視所屬使用者程序所開啟的某種型別的檔案

比如檢視root使用者程序所開啟的檔案型別為txt的檔案

# lsof -a -u root -d txt

auditd     2639 root txt       reg    3,2  102136  44536 /sbin/auditd

owcimomd   2643 root txt       reg    3,2   24560  90676 /usr/sbin/owcimomd

irqbalanc  2737 root txt       reg    3,2   25880  62557 /usr/sbin/irqbalance

nscd       2771 root txt       reg    3,2  129908  44802 /usr/sbin/nscd

vsftpd     2809 root txt       reg    3,2  129792 132934 /usr/sbin/vsftpd

xinetd     2812 root txt       reg    3,2  165952  60679 /usr/sbin/xinetd

smpppd     2825 root txt       reg    3,2  193752  99524 /usr/sbin/smpppd

sshd       2827 root txt       reg    3,2  376768  98762 /usr/sbin/sshd

zmd        2847 root txt       reg    3,2 1895856  86524 /usr/bin/mono

gdm        2893 root txt       reg    3,2  268424 126353 /opt/gnome/sbin/gdm

三、查詢誰在使用某個檔案系統

在解除安裝檔案系統時,如果該檔案系統中有任何開啟的檔案,操作通常將會失敗。那麼通過lsof可以找出那些程序在使用當前要解除安裝的檔案系統。

# lsof  /testdata/

command  pid user   fd   type device size node name

bash    4208 root  cwd    dir    3,1 4096    2 /testdata/

vim     4230 root  cwd    dir    3,1 4096    2 /testdata/

四、列出相關資訊

1、列出某個使用者開啟的檔案資訊

lsof  -u username

備註: -u 選項,u其實是user的縮寫

如 # lsof -u db2inst1

command  pid     user   fd   type   device       size       node name

db2sysc 4390 db2inst1  del    reg      0,8                294917 /sysv33984761

db2sysc 4390 db2inst1  del    reg      0,8                327686 /sysv00000000

db2sysc 4390 db2inst1  mem    reg      3,2     132847      19074 /lib64/ld-2.4.so

db2sysc 4390 db2inst1  mem    reg      3,2     217016     158186 /var/run/nscd/passwd

db2sysc 4390 db2inst1  mem    reg      3,2     123722      19107 /lib64/libpthread-2.4.so

db2sysc 4390 db2inst1  mem    reg      3,2  102866497     137967 /opt/ibm/db2/v9.7/lib64/libdb2e.so.1

db2sysc 4390 db2inst1  mem    reg      3,2    7889612     135807 /opt/ibm/db2/v9.7/lib64/libdb2osse.so.1

db2sysc 4390 db2inst1  mem    reg      3,2     399985      19089 /lib64/libm-2.4.so

2. 列出某個程式所開啟的檔案資訊

#lsof -c mysql

備註: -c 選項將會列出所有以mysql開頭的程式的檔案,其實你也可以寫成 lsof | grep mysql, 但是第一種方法明顯比第二種方法要少打幾個字元了

3. 列出多個程式多開啟的檔案資訊

#lsof -c mysql -c apache

4. 列出某個使用者以及某個程式所開啟的檔案資訊

#lsof -u test -c mysql

5. 列出除了某個使用者外的被開啟的檔案資訊

#lsof   -u ^root

備註:^這個符號在使用者名稱之前,將會把是root使用者開啟的程序不讓顯示

6. 通過某個程序號顯示該程序開啟的檔案

#lsof -p 19552

command     pid user   fd   type             device    size       node name

rpc.mount 19552 root  cwd    dir                3,2     256      91560 /var/lib/nfs

rpc.mount 19552 root  rtd    dir                3,2     584          2 /

rpc.mount 19552 root  txt    reg                3,2   77304      98667 /usr/sbin/rpc.mountd

rpc.mount 19552 root  mem    reg                3,2  132847      19074 /lib64/ld-2.4.so

rpc.mount 19552 root  del    reg                3,2             132550 /var/run/nscd/db5bu1ww

7. 列出多個程序號對應的檔案資訊

#lsof -p 123,456,789

8. 列出除了某個程序號,其他程序號所開啟的檔案資訊

#lsof -p ^1523

9 . 列出所有的網路連線

#lsof -i

10. 列出所有tcp 網路連線資訊

#lsof  -i tcp

11. 列出所有udp網路連線資訊

#lsof  -i udp

12. 列出誰在使用某個特定的udp、tcp埠

#lsof -i udp:55

特定的tcp埠

#lsof -i tcp:80

13. 列出某個使用者的所有活躍的網路埠

#lsof  -a -u test -i

14. 檢視誰正在使用某個檔案

#lsof   /filepath/file

15.遞迴檢視某個目錄的檔案資訊

#lsof +d /filepath/filepath2/

備註: 使用了+d,對應目錄下的所有子目錄和檔案都會被列出

unix linux常用網路命令系列 前言

本文主要介紹unix的常用網路命令,以期可以更好的除錯我們的網路程式,更好的理解網路,以及做很多其他的事情。計畫的命令如下 1.host 得到網路主機的有關資訊。2.ifconfig 顯示ip位址資訊。3.netstat 顯示路由資訊和網路統計數字 4.ip 顯示ip位址資訊。5.ss ss is ...

最常用的Unix Linux命令

壓縮資料夾 tar zcvf archive name.tar dirname 解壓資料夾 tar xvf archive name.tar在檔案中查詢字串 不區分大小寫 grep i the demo file輸出成功匹配的行,以及該行之後的三行 grep a3 i example demo te...

Unix Linux常用命令

檢視磁碟剩餘完間 df h 顯示當前目錄的目錄和檔案的大小 du d1 h 檢視埠占用情況 netstat tunlp 檢視某埠tcp連線數 netstat nat grep i 80 wc l 檢視程序資訊 ps aux ps ef 指定埠啟動svn服務 svnserve d r svndata ...