歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux服務器 >> 實例:Linux中如何查看服務及監聽端口

實例:Linux中如何查看服務及監聽端口

日期:2017/3/2 16:52:54   编辑:Linux服務器

問:我該如何發現哪種服務正在某個特定端口上監聽呢?我如何發現哪一個程序正在一個特定端口上監聽呢?

  答:在*NIX系統中,你可以使用下面的任何一個命令來得到在一個特定TCP端口上監聽的列表。

  Lsof:其功能是列示打開的文件,包括監聽端口。

  netstat :此命令象征性地展示各種與網絡有關的數據和信息的內容。

  Lsof命令示例

  你可以輸入下面的命令來查看IPv4端口:

  # lsof -Pnl +M -i4

  你可以輸入下面的命令來查看IPv6協議下的端口列示:

  # lsof -Pnl +M -i6

  此例輸出:

實例:Linux中如何查看服務及監聽端口

這裡我們不妨解釋一 下。第一欄是command,它給出了程序名稱的有關信息。請注意標題的細節。例如,第二行的gweather* 命令從美國 NWS服務器(140.90.128.70)獲取天氣的報告信息,包括交互天氣信息網絡和其它的天氣服務。在這裡,我們解釋一下命令各個參數。

  1. -P :這個選項約束著網絡文件的端口號到端口名稱的轉換。約束轉換可以使lsof運行得更快一些。在端口名稱的查找不能奏效時,這是很有用的。

  2. -n : 這個選項約束著網絡文件的端口號到主機名稱的轉換。約束轉換可以使lsof的運行更快一些。在主機名稱的查找不能奏效時,它非常有用。

  3. -l :這個選項約束著用戶ID號到登錄名的轉換。在登錄名的查找不正確或很慢時,這個選項就很有用。

  4. +M :此選項支持本地TCP和UDP端口映射程序的注冊報告。

  5. -i4 :僅列示IPv4協議下的端口。

  6. -i6 : 僅列示IPv6協議下的端口。

  Netstaty命令舉例

  請輸入下面的命令:

  # netstat -tulpn

  或者是

  # netstat -npl

  請看輸出結果::

  
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:6881 0.0.0.0:* LISTEN 6908/python

tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 5562/cupsd

tcp 0 0 127.0.0.1:3128 0.0.0.0:* LISTEN 6278/(squid)

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 5854/exim4

udp 0 0 0.0.0.0:32769 0.0.0.0:* 6278/(squid)

udp 0 0 0.0.0.0:3130 0.0.0.0:* 6278/(squid)

udp 0 0 0.0.0.0:68 0.0.0.0:* 4583/dhclient3

udp 0 0 0.0.0.0:6881 0.0.0.0:* 6908/python

請注意,最後一欄給出了關於程序名稱和端口的信息。在這裡,我們解釋一下各參數的含義:

  -t : 指明顯示TCP端口

  -u : 指明顯示UDP端口

  -l : 僅顯示監聽套接字(所謂套接字就是使應用程序能夠讀寫與收發通訊協議(protocol)與資料的程序)

  -p : 顯示進程標識符和程序名稱,每一個套接字/端口都屬於一個程序。

  -n : 不進行DNS輪詢(可以加速操作)

  關於/etc/services文件

  /etc/services是一個純ASCII文件,它可以提供互聯網服務的友好文本名稱,還有其默認分配的端口號和協議類型。每一個網絡程序都要進入這個文件得其服務的端口號(和協議)。你可以借助於cat命令或less命令等來查看這個文件:
$ cat /etc/services

$ grep 110 /etc/services

$ less /etc/services

Copyright © Linux教程網 All Rights Reserved