使用 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
