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 检查端⼝
netstat命令详解linux
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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。