Linux ss 命令实用示例

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,你将学习如何在 Linux 中使用 ss 命令来探索网络连接、分析套接字统计信息以及了解网络套接字的状态。ss 命令是一个强大的工具,它提供了有关 TCP、UDP 和 Unix 域套接字的详细信息,帮助你排查网络相关问题并监控系统的活动。

你将首先了解 ss 命令的用途和语法,包括可用于过滤和显示特定类型套接字的各种选项。然后,你将使用 ss 命令探索网络连接,学习如何识别活动连接、它们的本地和远程地址,以及与之关联的进程。最后,你将深入分析套接字统计信息和状态,从而更好地理解网络连接的性能和行为。

Linux 命令速查表


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux/SystemInformationandMonitoringGroup -.-> linux/ps("Process Displaying") linux/RemoteAccessandNetworkingGroup -.-> linux/netstat("Network Monitoring") subgraph Lab Skills linux/ps -.-> lab-422930{{"Linux ss 命令实用示例"}} linux/netstat -.-> lab-422930{{"Linux ss 命令实用示例"}} end

理解 ss 命令的用途和语法

在这一步骤中,你将学习 Linux 中 ss 命令的用途和语法。ss 命令是一个强大的工具,用于显示网络套接字的信息,包括 TCP、UDP 和 Unix 域套接字。

首先,让我们来探索 ss 命令的基本语法:

sudo ss [options]

ss 命令最常用的选项包括:

  • -t:显示 TCP 套接字
  • -u:显示 UDP 套接字
  • -x:显示 Unix 域套接字
  • -n:不解析服务名称
  • -a:显示所有套接字(监听和非监听)
  • -l:仅显示监听中的套接字
  • -p:显示使用套接字的进程

让我们通过一些示例来更好地理解 ss 命令:

sudo ss -t

示例输出:

State      Recv-Q Send-Q Local Address:Port               Peer Address:Port
LISTEN     0      4096   127.0.0.1:6379                   0.0.0.0:*
ESTAB      0      0      172.17.0.2:36578                 172.17.0.1:22

此命令显示所有 TCP 套接字的信息,包括连接状态、接收和发送的字节数、本地和远程地址以及使用的端口。

sudo ss -u

示例输出:

State      Recv-Q Send-Q Local Address:Port               Peer Address:Port
UNCONN     0      0      127.0.0.53%lo:53                 0.0.0.0:*
UNCONN     0      0      172.17.0.2:41378                 8.8.8.8:53

此命令显示所有 UDP 套接字的信息,包括本地和远程地址及端口。

sudo ss -x

示例输出:

State      Recv-Q Send-Q Local Address:Port               Peer Address:Port
LISTEN     0      4096   /run/dbus/system_bus_socket      *:*
LISTEN     0      4096   /run/systemd/journal/stdout      *:*

此命令显示所有 Unix 域套接字的信息,这些套接字用于同一系统内的进程间通信。

通过理解 ss 命令的用途和语法,你可以有效地分析和排查 Linux 系统中的网络连接问题。

使用 ss 命令探索网络连接

在这一步骤中,你将学习如何使用 ss 命令来探索和分析 Linux 系统中的网络连接。

首先,让我们显示所有活动的网络连接:

sudo ss -a

示例输出:

State      Recv-Q Send-Q Local Address:Port               Peer Address:Port
LISTEN     0      4096   127.0.0.1:6379                   0.0.0.0:*
ESTAB      0      0      172.17.0.2:36578                 172.17.0.1:22
UNCONN     0      0      127.0.0.53%lo:53                 0.0.0.0:*
UNCONN     0      0      172.17.0.2:41378                 8.8.8.8:53

此命令显示所有活动的套接字,包括监听和非监听套接字。

要仅显示监听中的套接字,可以使用 -l 选项:

sudo ss -l

示例输出:

State      Recv-Q Send-Q Local Address:Port               Peer Address:Port
LISTEN     0      4096   127.0.0.1:6379                   0.0.0.0:*
LISTEN     0      4096   /run/dbus/system_bus_socket      *:*
LISTEN     0      4096   /run/systemd/journal/stdout      *:*

此命令显示系统中所有正在监听的套接字,这些套接字正在等待传入连接。

要显示使用特定套接字的进程,可以使用 -p 选项:

sudo ss -ltp

示例输出:

State      Recv-Q Send-Q Local Address:Port               Peer Address:Port                  Process
LISTEN     0      4096   127.0.0.1:6379                   0.0.0.0:*                         users:(("redis-server",pid=520,fd=6))
LISTEN     0      4096   /run/dbus/system_bus_socket      *:*                               users:(("dbus-daemon",pid=518,fd=10))
LISTEN     0      4096   /run/systemd/journal/stdout      *:*                               users:(("systemd-journal",pid=516,fd=13))

此命令显示每个监听套接字所使用的进程 ID 和进程名称。

通过探索 ss 命令的输出,你可以深入了解 Linux 系统中的网络连接,这对于故障排查和监控非常有用。

使用 ss 命令分析套接字统计信息和状态

在这一步骤中,你将学习如何使用 ss 命令来分析 Linux 系统中的套接字统计信息和状态。

首先,让我们显示有关 TCP 套接字的详细信息:

sudo ss -t -i

示例输出:

State      Recv-Q Send-Q Local Address:Port               Peer Address:Port
ESTAB      0      0      172.17.0.2:36578                 172.17.0.1:22
   cubic wscale:7,7 rto:200 rtt:0.025/0.011 ato:40 mss:1460 pmtu:1500 rcvmss:1460 advmss:1460 cwnd:10 bytes_acked:1392 bytes_received:0 segs_out:18 segs_in:1 send 1.00Mbps rcv_space:29200

LISTEN     0      4096   127.0.0.1:6379                   0.0.0.0:*
   cubic wscale:7,7 rto:200 rtt:0.025/0.011 ato:40 mss:536 pmtu:1500 rcvmss:536 advmss:1460 cwnd:10 bytes_acked:1392 bytes_received:0 segs_out:18 segs_in:1 send 1.00Mbps rcv_space:29200

此命令显示每个 TCP 套接字的详细信息,包括套接字状态、发送和接收队列大小、本地和远程地址,以及各种套接字统计信息,例如拥塞控制算法、窗口缩放、往返时间等。

要显示所有套接字的状态,可以使用带有 -o 选项的 ss 命令:

sudo ss -o

示例输出:

State      Recv-Q Send-Q Local Address:Port               Peer Address:Port                  Timer
ESTAB      0      0      172.17.0.2:36578                 172.17.0.1:22                     timer:(keepalive,14sec,0)
LISTEN     0      4096   127.0.0.1:6379                   0.0.0.0:*                         timer:(timewait,60.0)
UNCONN     0      0      127.0.0.53%lo:53                 0.0.0.0:*                         timer:(off,0)
UNCONN     0      0      172.17.0.2:41378                 8.8.8.8:53                        timer:(off,0)

此命令显示所有套接字的状态,包括每个套接字的计时器信息。

通过分析带有 -t -i-o 选项的 ss 命令输出,你可以更深入地了解 Linux 系统中的网络连接,这对于故障排查和性能优化非常有用。

总结

在本实验中,你首先学习了 Linux 中 ss 命令的用途和语法。ss 命令是一个强大的工具,用于显示网络套接字的信息,包括 TCP、UDP 和 Unix 域套接字。你探索了 ss 命令的常见选项,例如 -t 用于 TCP 套接字,-u 用于 UDP 套接字,以及 -x 用于 Unix 域套接字。你还学习了如何使用 ss 命令显示网络连接的详细信息,包括连接状态、接收和发送的字节数,以及本地和远程地址及端口。

接下来,你学习了如何使用 ss 命令分析套接字统计信息和状态。ss 命令提供了有关当前网络连接状态的丰富信息,这对于排查和监控网络问题非常有用。

Linux 命令速查表