共计 4435 个字符,预计需要花费 12 分钟才能阅读完成。
这篇文章将为大家详细讲解有关 Linux 网络状态工具 ss 命令怎么用,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
ss 命令用于显示 socket 状态. 他可以显示 PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix domain sockets 等等统计. 它比其他工具展示等多 tcp 和 state 信息. 它是一个非常实用、快速、有效的跟踪 IP 连接和 sockets 的新工具.SS 命令可以提供如下信息:
所有的 TCP sockets
所有的 UDP sockets
所有 ssh/ftp/ttp/https 持久连接
所有连接到 Xserver 的本地进程
使用 state(例如:connected, synchronized, SYN-RECV, SYN-SENT,TIME-WAIT)、地址、端口过滤
所有的 state FIN-WAIT-1 tcpsocket 连接以及更多
很多流行的 Linux 发行版都支持 ss 以及很多监控工具使用 ss 命令. 熟悉这个工具有助于您更好的发现与解决系统性能问题. 本人强烈建议使用 ss 命令替代 netstat 部分命令, 例如 netsat -ant/lnt 等.
展示他之前来做个对比, 统计服务器并发连接数
eal 0m12.960s user 0m0.334s sys 0m12.561s # time ss -o state established | wc -l 3204 real 0m0.030s user 0m0.005s sys 0m0.026s netstat # time netstat -ant | grep EST | wc -l 3100 r
结果很明显 ss 统计并发连接数效率完胜 netstat, 在 ss 能搞定的情况下, 你还会在选择 netstat 吗, 还在犹豫吗, 看以下例子, 或者跳转到帮助页面.
常用 ss 命令:
ss -l 显示本地打开的所有端口 ss -pl 显示每个进程具体打开的 socket ss -t -a 显示所有 tcp socket ss -u -a 显示所有的 UDP Socekt ss -o state established ( dport = :smtp or sport = :smtp ) 显示所有已建立的 SMTP 连接 ss -o state established ( dport = :http or sport = :http ) 显示所有已建立的 HTTP 连接 ss -x src /tmp/.X11-unix/* 找出所有连接 X 服务器的进程 ss -s 列出当前 socket 详细信息:
显示 sockets 简要信息,列出当前已经连接,关闭,等待的 tcp 连接
# ss -s Total: 3519 (kernel 3691) TCP: 26557 (estab 3163, closed 23182, orphaned 194, synrecv 0, timewait 23182/0), ports 1452 Transport Total IP IPv6 * 3691 - - RAW 2 2 0 UDP 10 7 3 TCP 3375 3368 7 INET 3387 3377 10 FRAG 0 0 0
列出当前监听端口
# ss -lRecv-Q Send-Q Local Address:Port Peer Address:Port 0 10 :::5989 :::* 0 5 *:rsync *:* 0 128 :::sunrpc :::* 0 128 *:sunrpc *:* 0 511 * 2:http *:* 0 128 :::ssh :::* 0 128 *:ssh *:* 0 128 :::35766 :::* 0 128 127.0.0.1:ipp *:* 0 128 ::1:ipp :::* 0 100 ::1:smtp :::* 0 100 127.0.0.1:smtp *:* 0 511 *:https *:* 0 100 :::1311 :::* 0 5 *:5666 *:* 0 128 *:3044 *:*
ss 列出每个进程名及其监听的端口
# ss -pl
ss 列所有的 tcp sockets
# ss -t -a
ss 列出所有 udp sockets
# ss -u -a
ss 列出所有 http 连接中的连接
# ss -o state established ( dport = :http or sport = :http )
middot; 以上包含对外提供的 80,以及访问外部的 80
middot; 用以上命令完美的替代 netstat 获取 http 并发连接数,监控中常用到
ss 列出本地哪个进程连接到 x server
# ss -x src /tmp/.X11-unix/*
ss 列出处在 FIN-WAIT- 1 状态的 http、https 连接
# ss -o state fin-wait-1 ( sport = :http or sport = :https )
ss 常用的 state 状态:
established syn-sent syn-recv fin-wait-1 fin-wait-2 time-wait closed close-wait last-ack listen closing all : All of the above states connected : All the states except for listen and closed synchronized : All the connected states except for syn-sent bucket : Show states, which are maintained as minisockets, i.e. time-wait and syn-recv. big : Opposite to bucket state.
ss 使用 IP 地址筛选
ss src ADDRESS_PATTERN src:表示来源 ADDRESS_PATTERN:表示地址规则 如下: ss src 120.33.31.1 # 列出来之 20.33.31.1 的连接 # 列出来至 120.33.31.1,80 端口的连接 ss src 120.33.31.1:http ss src 120.33.31.1:8
ss 使用端口筛选
ss dport OP PORT OP: 是运算符 PORT:表示端口 dport:表示过滤目标端口、相反的有 sport
OP 运算符如下:
= or le : 小于等于 = or ge : 大于等于 == or eq : 等于 != or ne : 不等于端口 or lt : 小于这个端口 or gt : 大于端口
OP 实例
ss sport = :http 也可以是 ss sport = :80 ss dport = :http ss dport \ :1024 ss sport \ :1024 ss sport \ :32000 ss sport eq :22 ss dport != :22 ss state connected sport = :http ss \( sport = :http or sport = :https \) ss -o state fin-wait-1 \( sport = :http or sport = :https \) dst 192.168.1/24
为什么 ss 比 netstat 快:
netstat 是遍历 /proc 下面每个 PID 目录,ss 直接读 /proc/net 下面的统计信息。所以 ss 执行的时候消耗资源以及消耗的时间都比 netstat 少很多
ss 命令帮助
# ss -h 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 -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 -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 -f, --family=FAMILY display sockets of type FAMILY -A, --query=QUERY, --socket=QUERY QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY] -D, --diag=FILE Dump raw information about TCP sockets to FILE -F, --filter=FILE read filter information from FILE FILTER := [ state TCP-STATE ] [ EXPRESSION ]
关于“Linux 网络状态工具 ss 命令怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。