Linux ss 命令初学者教程(8 个示例)
在此页
- Linux ss 命令
- Q1。如何使用ss命令?
- Q2。如何使 ss 抑制标题行?
- Q3。如何让 ss 同时显示监听和非监听套接字?
- Q4。如何使用套接字使 ss 显示进程?
- Q5。如何让ss产生摘要信息?
- Q6。如何让 ss 只显示 IPv4 或 IPv6 套接字?
- Q7。如何让 ss 只显示 TCP 或 UDP 套接字?
- 结论
说到Linux中通过命令行访问socket相关信息,第一个想到的工具就是netstat。但是,还有另一个实用程序可以为您完成这项工作。
它叫ss。在本教程中,我们将使用一些易于理解的示例来讨论该工具的基础知识。但在我们这样做之前,值得一提的是这里的所有案例都已经在 Ubuntu 18.04 LTS 机器上进行了测试。
Linux ss命令
Linux 中的 ss 命令允许您调查套接字。以下是它的语法:
ss [options] [ FILTER ]
下面是工具手册页关于它的内容:
ss is used to dump socket statistics. It allows showing information similar to netstat.
It can display more TCP and state information than other tools.
以下是一些 Q&A 风格的示例,可以让您更好地了解 ss 命令的工作原理。
Q1。如何使用ss命令?
在其最基本的形式中,您可以通过执行 ss sans 任何选项来使用 ss 命令。
ss
以下是在我的案例中生成的命令的输出:

您会注意到 ss 在其默认输出中显示已建立连接的套接字。
Q2。如何使 ss 抑制标题行?
可以使用 -H 命令行选项来抑制标头。
ss -H
以下屏幕截图显示了此命令行选项的运行情况:

所以你可以看到在这种情况下标题行丢失了。
Q3.如何让 ss 同时显示监听和非监听套接字?
您可以使用 -a 命令行选项执行此操作。
ss -a
请注意,默认情况下会省略侦听套接字,因此使用 -a 会使 ss 将它们包含在输出中。但是,如果您希望 ss 仅显示侦听套接字,请使用 -l 命令行选项。
ss -l
Q4.如何使用套接字使 ss 显示进程?
如果您希望 ss 命令显示进程信息以及它已经在输出中生成的其他信息,请使用 -p 命令行选项。
ss -p
以下屏幕截图显示了我的案例的输出:

所以你可以看到输出中显示了进程信息。
Q5.如何让ss产生摘要信息?
如果您不想看到 ss 命令默认生成的输出。然后有一个选项,您可以通过该选项要求 ss 提供它解析的信息的小摘要。
可以使用 -s 命令行选项生成此摘要:
ss -s
例如,以下是我的案例中提供的摘要:
Total: 1334 (kernel 0)
TCP: 41 (estab 35, closed 3, orphaned 0, synrecv 0, timewait 3/0), ports 0
Transport Total IP IPv6
* 0 - -
RAW 1 0 1
UDP 7 5 2
TCP 38 37 1
INET 46 42 4
FRAG 0 0 0
Q6.如何让 ss 只显示 IPv4 或 IPv6 套接字?
这可以使用 -4 和 -6 选项来完成。
例如,要使 ss 仅显示 IPv4 套接字,请运行以下命令:
ss -4
同样对于 IPv6,执行以下命令:
ss -6
Q7.如何让 ss 只显示 TCP 或 UDP 套接字?
您可以在此处使用不同的命令行选项:-t 用于 TCP,-u 用于 UDP。
以下是 ss 命令手册页的有用摘录。
-t, --tcp
Display TCP sockets.
-u, --udp
Display UDP sockets.
-d, --dccp
Display DCCP sockets.
-w, --raw
Display RAW sockets.
-x, --unix
Display Unix domain sockets (alias for -f unix).
-S, --sctp
Display SCTP sockets.
--vsock
Display vsock sockets (alias for -f vsock).
结论
如果您的 Linux 工作涉及网络,则 ss 命令是一个方便的工具。在本教程中,我们讨论了 ss 提供的一些命令行选项。完成这些练习后,请前往工具手册页了解更多信息。