Linux基础命令-ss显示socket信息
ss
一. 命令介绍
先使用手册查看命令介绍信息
NAME
ss - another utility to investigate sockets
DESCRIPTION
ss is used to dump socket statistics. It allows showing information similar
to netstat. It can display more TCP and state informations than other tools.
ss(Socket Statistics)命令主要功能是显示套接字信息。与netstat命令的使用十分的相似,都是用于显示套接字信息,而ss命令的优势在于它能够显示更多TCP和连接状态的详情信息,并且速度更快更高效。
二. 语法格式
ss的语法格式是:ss 【参数】【过滤器】
SYNOPSIS
ss [options] [ FILTER ]
三. 基本参数
命令的基本参数有以下这些,参数会比较多,当然也可以说明这个命令的用法会挺丰富的。
-n | 不解析域名 |
-a | 显示所有套接字 |
-l | 显示处于监听状态的套接字 |
-o | 显示计时器信息 |
-e | 显示详细的套接字信息 |
-m | 显示socket的内存情况 |
-p | 显示使用套接字的过程 |
-i | 显示内部的TCP信息 |
-s | 显示socket使用情况 |
-4 | 显示ipv4的套接字信息 |
-6 | 显示ipv6的套接字信息 |
-0 | 显示PACKET套接字信息 |
-t | 显示TCP的套接字信息 |
-u | 显示UDP套接字信息 |
-d | 显示DCCP套接字信息 |
-w | 显示RAW套接字信息 |
-D | 将原始TCP套接字信息转储到文件 |
-r | 解析IP和端口号 |
四. 各列所代表的含义
Netid | 网络标识符 |
State | 每个服务的连接状态 |
Recv-Q | 接收socket(套接字)队列中的数据量,以字节为单位 |
Send-Q | 发送socket(套接字)队列中的数据量,以字节为单位 |
Local Address | 运行本地的计算机地址 |
Port | 服务端口 |
Peer Address | 对等端口 |
五. 参考实例
1.列出已建立的连接
默认情况,只使用ss
命令,不加任何参数的情况下,它会显示所有已建立连接的套接字列表信息
[root@localhost ~]# ss |wc -l
716
[root@localhost ~]# ss | head -n 3
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
u_str ESTAB 0 0 * 37084 * 37928
u_str ESTAB 0 0 * 36812 * 36814
2.监听TCP协议的套接字信息
可以使用-l
参数监听所有tcp
协议的套接字内容
<pre>[root@localhost ~]# ss -lt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 127.0.0.1:smtp *:*
LISTEN 0 128 *:sunrpc *:*
LISTEN 0 5 192.168.122.1:domain *:*
LISTEN 0 128 *:ssh *:*
LISTEN 0 128 127.0.0.1:ipp *:*
LISTEN 0 100 [::1]:smtp [::]:*
LISTEN 0 128 [::]:sunrpc [::]:*
LISTEN 0 128 [::]:ssh [::]:*
LISTEN 0 128 [::1]:ipp [::]:*
</pre>
3. 查看主机监听的端口
-n
表示不解析域名,显示的是IP+端口的格式
[root@localhost ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:111 *:*
LISTEN 0 5 192.168.122.1:53 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 128 127.0.0.1:631 *:*
4. 显示在运行进程的信息
需要使用到-p
的参数,结合-tl
是显示tcp协议的服务并且处于监听状态下的信息
[root@localhost ~]# ss -tlp |head -10
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 127.0.0.1:smtp *:* users:(("master",pid=1284,fd=13))
LISTEN 0 128 *:sunrpc *:* users:(("rpcbind",pid=704,fd=8))
LISTEN 0 5 192.168.122.1:domain *:* users:(("dnsmasq",pid=1533,fd=6))
LISTEN 0 128 *:ssh *:* users:(("sshd",pid=1176,fd=3))
LISTEN 0 128 127.0.0.1:ipp *:* users:(("cupsd",pid=1168,fd=11))
LISTEN 0 100 [::1]:smtp [::]:* users:(("master",pid=1284,fd=14))
可以看到在最后一列会显示进程的名称、PID、fd文件描述符等信息。
还可通过grep
过滤信息来获取想知道的服务信息
[root@localhost ~]# ss -ltp | grep ssh
LISTEN 0 128 *:ssh *:* users:(("sshd",pid=1176,fd=3))
LISTEN 0 128 [::]:ssh [::]:* users:(("sshd",pid=1176,fd=4))
5. 显示所有已经建立的信息
需要使用-a
参数,表示显示所有的连接信息
[root@localhost ~]# ss -a | wc -l
963
[root@localhost ~]# ss | wc -l
716
因为信息太多,这里就不列出了,可以看下显示所有与默认的情况下,会多出来比较多行信息。
还可以在加上-t -n
参数使用
[root@localhost ~]# ss -ant
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:111 *:*
LISTEN 0 5 192.168.122.1:53 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 128 127.0.0.1:631 *:*
ESTAB 0 0 192.168.157.166:22 192.168.157.213:65011
LISTEN 0 100 [::1]:25 [::]:*
LISTEN 0 128 [::]:111 [::]:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 128 [::1]:631 [::]:*
[root@localhost ~]# ss -nt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 192.168.157.166:22 192.168.157.213:65011
6. 显示服务更多的信息
如显示-o
时间信息、-m
显示套接字使用的内容、-i
显示内部tcp的信息
[root@localhost ~]# ss -imo | head -2
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
u_str ESTAB 0 0 * 37084 * 37928 skmem:(r0,rb212992,t0,tb212992,f0,w0,o0,bl0,d0)
7. 显示套接字的使用信息
显示使用信息需要用到-s
的参数
[root@localhost ~]# ss -s
Total: 1711 (kernel 2055)
TCP: 11 (estab 1, closed 1, orphaned 0, synrecv 0, timewait 0/0), ports 0
Transport Total IP IPv6
* 2055 - -
RAW 1 0 1
UDP 11 8 3
TCP 10 6 4
INET 22 14 8
FRAG 0 0 0
8. 显示IPv4的信息
需要使用-4
的参数,在后面跟上要过滤的信息,这里只显示正在监听的服务。
[root@localhost ~]# ss -4 state listening
Netid Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp 0 100 127.0.0.1:smtp *:*
tcp 0 128 *:sunrpc *:*
tcp 0 5 192.168.122.1:domain *:*
tcp 0 128 *:ssh *:*
tcp 0 128 127.0.0.1:ipp *:*
若要显示IPv6的可以使用-6
的参数
[root@localhost ~]# ss -6 state listening
Netid Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp 0 100 [::1]:smtp [::]:*
tcp 0 128 [::]:sunrpc [::]:*
tcp 0 128 [::]:ssh [::]:*
tcp 0 128 [::1]:ipp [::]:*
9. 匹配远程与本地地址和端口号
这里需要用到几种参数格式
分别是:
dst :过滤连接的目标地址
src: 过滤连接的本地地址
dport:目标端口
sport:来源端口
匹配远程地址和端口号
ss dst 192.168.157.33
ss dst 192.168.157.33:443
ss dst 192.168.157.33:http
匹配本地端口和端口号
ss src 192.168.157.166
ss src 192.168.157.166:22
ss src 192.168.157.166:ssh
9.1 当然还可以将本地与远程端口和一个数进行比较
使用方法:
ss dport OP num
ss sport OP num
以上文本中的OP可以使用以下这些内容
<= | le | 小于等于 |
== | eq | 等于 |
!= | ne | 不等于 |
> | gt | 大于 |
< | lt | 小于 |
是不是突然觉得表格中的符号这么熟悉,如果有学习过shell脚本的,应该一眼就能看出来符号代表的是什么意思。
下面继续来演示下如何使用:
显示来源端口小于50的端口号的内容
[root@localhost ~]# ss -ntul sport lt 50
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 100 127.0.0.1:25 *:*
tcp LISTEN 0 128 *:22 *:*
tcp LISTEN 0 100 [::1]:25 [::]:*
tcp LISTEN 0 128 [::]:22 [::]:*
如果要用符号,则需要在符号前面加上转义符。
[root@localhost ~]# ss -ntul sport \< 50
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 100 127.0.0.1:25 *:*
tcp LISTEN 0 128 *:22 *:*
tcp LISTEN 0 100 [::1]:25 [::]:*
tcp LISTEN 0 128 [::]:22 [::]:*
总结
以上的内容仅仅只是ss命令的一部分内容,因为ss命令的参数特别多,在用法上更是不计其数,关于查看网络状态信息,ss和netstat了解使用方法也是很有必要的。若觉得以上内容还行的,可以点赞支持一下!
相关文章
- 探究Linux命令a的用途(linux命令-a)
- Linux下备份文件的最佳命令(linux备份文件命令)
- 行Linux开发之命令行魔法(linux开发命令)
- Linux下find命令的实用经验(linux中find的用法)
- Linux系统接口测试:提升软件稳定性(linux测试接口)
- Linux 无法找到命令:解决办法(linux找不到命令)
- Linux 下后台运行命令的步骤示范(linux命令后台执行)
- Linux解除U盘挂载难题(linux无法卸载u盘)
- 行比较DOS与Linux命令行差异(dos和linux命令)
- 超标Linux系统空间超标预防与处理(linux可用空间)
- Linux命令sync的使用指南(linux命令sync)
- Linux二进制命令详解:快速掌握常用命令及操作技巧(linux二进制命令)
- 掌握 Linux 控制台显示技巧:让你的工作更高效(linux控制台显示)
- 如何在 Linux 中启用 IPv4?(linux启用ipv4)
- Linux命令:查询文件个数(linux查询文件个数)
- 程序管理Linux 自启动程序的正确方式(查看linux自启动)
- 中断Linux进程:一种必要的操作(linux中断进程)
- 行掌握Linux命令行:如何进入与操作(怎么打开linux命令)
- Linux命令的精妙语法(linux命令语法)
- Linux下删除全部文件的命令(linux删除全部的命令)
- 学习 Linux:掌握 chmod 命令,解锁权限管理之道(linux的chmod)
- 进程的方法Killing processes in Linux: useful commands for terminating current tasks(linux结束当前)
- 比较Linux和AIX操作系统的区别(linux和aix区别)
- Linux命令解读:让你明了CLI的功能(linux 命令 解析)
- Linux 命令安装:和轻松打开系统大门(linux 命令 安装)
- Linux下妙用复制命令,快速而高效(linux下的复制命令)
- 掌握 Linux 世界的神器:文件列表命令大全(linux文件列表命令)
- 深入研究 Linux 物理分区(linux 物理分区)
- 一步搞定:Linux关闭服务器的简单命令(linux关闭服务器命令)