Linux系統查看端口的命令


使用 netstat 檢查端口

netstat 是一個命令行工具,可以提供有關網絡連接的信息。要列出正在偵聽的所有 TCP 或 UDP 端口,包括使用端口和套接字狀態的服務,可以使用以下命令:

netstat –tunlp

此命令中使用的選項具有以下含義:

1)-t:顯示 TCP 端口

2)-u : 顯示 UDP 端口

3)-n: 顯示數字地址而不是主機名

4)-l :僅顯示偵聽端口

5)-p:顯示進程的 PID 和名稱。僅當以 root 或 sudo 用戶身份運行命令時,才會顯示此信息

之后出現的結果比較重要的列是:

1)Proto : 套接字使用的協議

2)Local Address: 進程偵聽的 IP 地址和端口號

3)PID/Program name :PID 和進程名稱

如果要過濾結果,請使用 grep 命令。例如,要查找在 TCP 端口 80 上偵聽的進程,請鍵入:

netstat -tnlp | grep :80

如果輸出為空,則表示沒有任何內容正在偵聽端口。還可以根據條件篩選列表,例如 PID ,協議,狀態等。雖然現在netstat 是過時的,並與替換 ss ,但它仍然是最常用的命令來檢查網絡連接。

uni@uni-virtual-machine:~$ netstat --help
usage: netstat [-vWeenNcCF] [<Af>] -r         netstat {-V|--version|-h|--help}
       netstat [-vWnNcaeol] [<Socket> ...]
       netstat { [-vWeenNac] -i | [-cnNe] -M | -s [-6tuw] }

        -r, --route              顯示路由表
        -i, --interfaces         display interface table
        -g, --groups             display multicast group memberships
        -s, --statistics         display networking statistics (like SNMP)
        -M, --masquerade         display masqueraded connections

        -v, --verbose            顯示詳細信息
        -W, --wide               don't truncate IP addresses
        -n, --numeric            不解析名稱
        --numeric-hosts          不解析主機名
        --numeric-ports          忽略端口名稱
        --numeric-users          忽略用戶名
        -N, --symbolic           resolve hardware names
        -e, --extend             顯示更多信息
        -p, --programs           display PID/Program name for sockets
        -o, --timers             display timers
        -c, --continuous         continuous listing

        -l, --listening          display listening server sockets
        -a, --all                display all sockets (default: connected)
        -F, --fib                display Forwarding Information Base (default)
        -C, --cache              display routing cache instead of FIB
        -Z, --context            display SELinux security context for sockets

  <Socket>={-t|--tcp} {-u|--udp} {-U|--udplite} {-S|--sctp} {-w|--raw}
           {-x|--unix} --ax25 --ipx --netrom
  <AF>=Use '-6|-4' or '-A <af>' or '--<af>';默認: inet
  列出所有支持的協議:
    inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25) 
    netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP) 
    x25 (CCITT X.25) 

使用 ss 檢查端口

ss 是新的 netstat,雖然缺少一些 netstat 功能,但暴露了更多的 TCP 狀態,而且速度稍快,命令選項大致相同,因此從 netstat 轉換為 ss 並不困難。要使用 ss 獲取所有偵聽端口的列表,請鍵入:

ss –tunlp

輸出幾乎與 netstat 報告的輸出相同。

uni@uni-virtual-machine:~$ ss --help
Usage: ss [ OPTIONS ]
       ss [ OPTIONS ] [ FILTER ]
   -h, --help          this message
   -V, --version       output version information
   -n, --numeric       don't resolve service names
   -r, --resolve       resolve host names
   -a, --all           display all sockets
   -l, --listening     display listening sockets
   -o, --options       show timer information
   -e, --extended      show detailed socket information
   -m, --memory        show socket memory usage
   -p, --processes     show process using socket
   -i, --info          show internal TCP information
   -s, --summary       show socket usage summary
   -b, --bpf           show bpf filter socket information
   -E, --events        continually display sockets as they are destroyed
   -Z, --context       display process SELinux security contexts
   -z, --contexts      display process and socket SELinux security contexts
   -N, --net           switch to the specified network namespace name

   -4, --ipv4          display only IP version 4 sockets
   -6, --ipv6          display only IP version 6 sockets
   -0, --packet        display PACKET sockets
   -t, --tcp           display only TCP sockets
   -S, --sctp          display only SCTP sockets
   -u, --udp           display only UDP sockets
   -d, --dccp          display only DCCP sockets
   -w, --raw           display only RAW sockets
   -x, --unix          display only Unix domain sockets
       --vsock         display only vsock sockets
   -f, --family=FAMILY display sockets of type FAMILY
       FAMILY := {inet|inet6|link|unix|netlink|vsock|help}

   -K, --kill          forcibly close sockets, display what was closed
   -H, --no-header     Suppress header line

   -A, --query=QUERY, --socket=QUERY
       QUERY := {all|inet|tcp|udp|raw|unix|unix_dgram|unix_stream|unix_seqpacket|packet|netlink|vsock_stream|vsock_dgram}[,QUERY]

   -D, --diag=FILE     Dump raw information about TCP sockets to FILE
   -F, --filter=FILE   read filter information from FILE
       FILTER := [ state STATE-FILTER ] [ EXPRESSION ]
       STATE-FILTER := {all|connected|synchronized|bucket|big|TCP-STATES}
         TCP-STATES := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|closed|close-wait|last-ack|listening|closing}
          connected := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}
       synchronized := {established|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}
             bucket := {syn-recv|time-wait}
                big := {established|syn-sent|fin-wait-{1,2}|closed|close-wait|last-ack|listening|closing}

使用 lsof 檢查端口

lsof 是一個功能強大的命令行實用程序,它提供有關進程打開的文件的信息。在 Linux 系統中,一切都是文件,可以將套接字視為寫入網絡的文件。要使用 lsof 獲取所有偵聽 TCP 端口的列表,請輸入:

lsof -nP -iTCP -sTCP:LISTEN

使用的選項如下:

1)-n : 不要將端口號轉換為端口名稱

2)-p : 不要解析主機名,顯示數字地址

3)-iTCP -sTCP:LISTEN: 僅顯示 TCP 協議狀態為 LISTEN 的網絡文件

要查找指定正在偵聽特定端口的進程,以3306端口,請使用以下命令:

lsof -nP -iTCP:3306 -sTCP:LISTEN

轉自:https://baijiahao.baidu.com/s?id=1648074965747440167&wfr=spider&for=pc


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM