中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在Linux系統中使用lsof命令

發布時間:2021-09-03 17:00:16 來源:億速云 閱讀:103 作者:chen 欄目:系統運維

這篇文章主要講解了“在Linux系統中使用lsof命令”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“在Linux系統中使用lsof命令”吧!

lsof是系統管理/安全的尤伯工具。我大多數時候用它來從系統獲得與網絡連接相關的信息,但那只是這個強大而又鮮為人知的應用的第一步。將這個工具稱之為lsof真實名副其實,因為它是指“列出打開文件(lists openfiles)”。而有一點要切記,在Unix中一切(包括網絡套接口)都是文件。

有趣的是,lsof也是有著最多開關的Linux/Unix命令之一。它有那么多的開關,它有許多選項支持使用-和+前綴。

   

代碼如下:

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]

正如你所見,lsof有著實在是令人驚訝的選項數量。你可以使用它來獲得你系統上設備的信息,你能通過它了解到指定的用戶在指定的地點正在碰什么東西,或者甚至是一個進程正在使用什么文件或網絡連接。

對于我,lsof替代了netstat和ps的全部工作。它可以帶來那些工具所能帶來的一切,而且要比那些工具多得多。那么,讓我們來看看它的一些基本能力吧:
關鍵選項

理解一些關于lsof如何工作的關鍵性東西是很重要的。最重要的是,當你給它傳遞選項時,默認行為是對結果進行“或”運算。因此,如果你正是用-i來拉出一個端口列表,同時又用-p來拉出一個進程列表,那么默認情況下你會獲得兩者的結果。

下面的一些其它東西需要牢記:

    默認 : 沒有選項,lsof列出活躍進程的所有打開文件
    組合 : 可以將選項組合到一起,如-abc,但要當心哪些選項需要參數
    -a : 結果進行“與”運算(而不是“或”)
    -l : 在輸出顯示用戶ID而不是用戶名
    -h : 獲得幫助
    -t : 僅獲取進程ID
    -U : 獲取UNIX套接口地址
    -F : 格式化輸出結果,用于其它命令。可以通過多種方式格式化,如-F pcfn(用于進程id、命令名、文件描述符、文件名,并以空終止)

獲取網絡信息

正如我所說的,我主要將lsof用于獲取關于系統怎么和網絡交互的信息。這里提供了關于此信息的一些主題:
使用-i顯示所有連接

有些人喜歡用netstat來獲取網絡連接,但是我更喜歡使用lsof來進行此項工作。結果以對我來說很直觀的方式呈現,我僅僅只需改變我的語法,就可以通過同樣的命令來獲取更多信息。

   

代碼如下:

# lsof -i
   
   COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
   dhcpcd 6061 root 4u IPv4 4510 UDP *:bootpc
   sshd 7703 root 3u IPv6  6499 TCP *:ssh (LISTEN)
   sshd 7892 root 3u IPv6  6757 TCP 10.10.1.5:ssh->192.168.1.5:49901 (ESTABLISHED)

使用-i 6僅獲取IPv6流量

   

代碼如下:

# lsof -i 6

僅顯示TCP連接(同理可獲得UDP連接)

你也可以通過在-i后提供對應的協議來僅僅顯示TCP或者UDP連接信息。

   

代碼如下:

# lsof -iTCP
   
   COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
   sshd 7703 root 3u IPv6 6499 TCP *:ssh (LISTEN)
   sshd 7892 root 3u IPv6 6757 TCP 10.10.1.5:ssh->192.168.1.5:49901 (ESTABLISHED)

使用-i:port來顯示與指定端口相關的網絡信息

或者,你也可以通過端口搜索,這對于要找出什么阻止了另外一個應用綁定到指定端口實在是太棒了。

   

代碼如下:

# lsof -i :22
   
   COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
   sshd 7703 root 3u  IPv6 6499 TCP *:ssh (LISTEN)
   sshd 7892 root 3u  IPv6 6757 TCP 10.10.1.5:ssh->192.168.1.5:49901 (ESTABLISHED)

使用@host來顯示指定到指定主機的連接

這對于你在檢查是否開放連接到網絡中或互聯網上某個指定主機的連接時十分有用。

   

代碼如下:

# lsof -i@172.16.12.5
   
   sshd 7892 root 3u IPv6 6757 TCP 10.10.1.5:ssh->172.16.12.5:49901 (ESTABLISHED)

使用@host:port顯示基于主機與端口的連接

你也可以組合主機與端口的顯示信息。

   

代碼如下:

# lsof -i@172.16.12.5:22
   
   sshd 7892 root 3u IPv6 6757 TCP 10.10.1.5:ssh->172.16.12.5:49901 (ESTABLISHED)

找出監聽端口

找出正等候連接的端口。

   

代碼如下:

# lsof -i -sTCP:LISTEN

你也可以grep “LISTEN”來完成該任務。

   

代碼如下:

# lsof -i | grep -i LISTEN
   
   iTunes     400 daniel   16u  IPv4 0x4575228  0t0 TCP *:daap (LISTEN)

找出已建立的連接

你也可以顯示任何已經連接的連接。

   

代碼如下:

# lsof -i -sTCP:ESTABLISHED

你也可以通過grep搜索“ESTABLISHED”來完成該任務。

    [/code]# lsof -i | grep -i ESTABLISHED
    
    firefox-b 169 daniel  49u IPv4 0t0 TCP 1.2.3.3:1863->1.2.3.4:http (ESTABLISHED)[/code]
   

用戶信息

你也可以獲取各種用戶的信息,以及它們在系統上正干著的事情,包括它們的網絡活動、對文件的操作等。
使用-u顯示指定用戶打開了什么

   

代碼如下:

# lsof -u daniel
   
   -- snipped --
   Dock 155 daniel  txt REG   14,2   2798436   823208 /usr/lib/libicucore.A.dylib
   Dock 155 daniel  txt REG   14,2   1580212   823126 /usr/lib/libobjc.A.dylib
   Dock 155 daniel  txt REG   14,2   2934184   823498 /usr/lib/libstdc++.6.0.4.dylib
   Dock 155 daniel  txt REG   14,2    132008   823505 /usr/lib/libgcc_s.1.dylib
   Dock 155 daniel  txt REG   14,2    212160   823214 /usr/lib/libauto.dylib
   -- snipped --

使用-u user來顯示除指定用戶以外的其它所有用戶所做的事情

   

代碼如下:

# lsof -u ^daniel
   
   -- snipped --
   Dock 155 jim  txt REG   14,2   2798436   823208 /usr/lib/libicucore.A.dylib
   Dock 155 jim  txt REG   14,2   1580212   823126 /usr/lib/libobjc.A.dylib
   Dock 155 jim  txt REG   14,2   2934184   823498 /usr/lib/libstdc++.6.0.4.dylib
   Dock 155 jim  txt REG   14,2    132008   823505 /usr/lib/libgcc_s.1.dylib
   Dock 155 jim  txt REG   14,2    212160   823214 /usr/lib/libauto.dylib
   -- snipped --

殺死指定用戶所做的一切事情

可以消滅指定用戶運行的所有東西,這真不錯。

   

代碼如下:

# kill -9 `lsof -t -u daniel`

命令和進程

可以查看指定程序或進程由什么啟動,這通常會很有用,而你可以使用lsof通過名稱或進程ID過濾來完成這個任務。下面列出了一些選項:
使用-c查看指定的命令正在使用的文件和網絡連接

   

代碼如下:

# lsof -c syslog-ng
   
   COMMAND    PID USER   FD   TYPE     DEVICE    SIZE       NODE NAME
   syslog-ng 7547 root  cwd    DIR    3,3    4096   2 /
   syslog-ng 7547 root  rtd    DIR    3,3    4096   2 /
   syslog-ng 7547 root  txt    REG    3,3  113524  1064970 /usr/sbin/syslog-ng
   -- snipped --

使用-p查看指定進程ID已打開的內容

   

代碼如下:

# lsof -p 10075
   
   -- snipped --
   sshd    10068 root  mem    REG    3,3   34808 850407 /lib/libnss_files-2.4.so
   sshd    10068 root  mem    REG    3,3   34924 850409 /lib/libnss_nis-2.4.so
   sshd    10068 root  mem    REG    3,3   26596 850405 /lib/libnss_compat-2.4.so
   sshd    10068 root  mem    REG    3,3  200152 509940 /usr/lib/libssl.so.0.9.7
   sshd    10068 root  mem    REG    3,3   46216 510014 /usr/lib/liblber-2.3
   sshd    10068 root  mem    REG    3,3   59868 850413 /lib/libresolv-2.4.so
   sshd    10068 root  mem    REG    3,3 1197180 850396 /lib/libc-2.4.so
   sshd    10068 root  mem    REG    3,3   22168 850398 /lib/libcrypt-2.4.so
   sshd    10068 root  mem    REG    3,3   72784 850404 /lib/libnsl-2.4.so
   sshd    10068 root  mem    REG    3,3   70632 850417 /lib/libz.so.1.2.3
   sshd    10068 root  mem    REG    3,3    9992 850416 /lib/libutil-2.4.so
   -- snipped --

-t選項只返回PID

   

代碼如下:

# lsof -t -c Mail
   
   350

文件和目錄

通過查看指定文件或目錄,你可以看到系統上所有正與其交互的資源——包括用戶、進程等。
顯示與指定目錄交互的所有一切

   

代碼如下:

# lsof /var/log/messages/
   
   COMMAND    PID USER   FD   TYPE DEVICE   SIZE   NODE NAME
   syslog-ng 7547 root    4w   REG    3,3 217309 834024 /var/log/messages

顯示與指定文件交互的所有一切

   

代碼如下:

# lsof /home/daniel/firewall_whitelist.txt

高級用法

與tcpdump類似,當你開始組合查詢時,它就顯示了它強大的功能。
顯示daniel連接到1.1.1.1所做的一切

   

代碼如下:

# lsof -u daniel -i @1.1.1.1
   
   bkdr   1893 daniel 3u  IPv6 3456 TCP 10.10.1.10:1234->1.1.1.1:31337 (ESTABLISHED)

同時使用-t和-c選項以給進程發送 HUP 信號

   

代碼如下:

# kill -HUP `lsof -t -c sshd`

lsof +L1顯示所有打開的鏈接數小于1的文件

這通常(當不總是)表示某個攻擊者正嘗試通過刪除文件入口來隱藏文件內容。

   

代碼如下:

# lsof +L1
   
   (hopefully nothing)

顯示某個端口范圍的打開的連接

   

代碼如下:

# lsof -i @fw.google.com:2150=2180

感謝各位的閱讀,以上就是“在Linux系統中使用lsof命令”的內容了,經過本文的學習后,相信大家對在Linux系統中使用lsof命令這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

克东县| 芮城县| 巴彦县| 甘孜| 克拉玛依市| 琼中| 深泽县| 桓仁| 汨罗市| 乌兰察布市| 柏乡县| 徐汇区| 苗栗市| 南和县| 福泉市| 玉树县| 将乐县| 靖州| 九台市| 专栏| 周宁县| 汕尾市| 许昌市| 蒙山县| 平顺县| 浙江省| 麟游县| 新竹县| 绥阳县| 勐海县| 平果县| 浦江县| 龙岩市| 襄汾县| 福泉市| 长岛县| 舟山市| 宾川县| 巩义市| 泽库县| 老河口市|