如何在linux上使用ss命令

ss命令是经典netstat的现代替代品。您可以在Linux上使用它来获取有关网络连接的统计信息。下面是如何使用这个方便的工具。...

ss命令是经典netstat的现代替代品。您可以在Linux上使用它来获取有关网络连接的统计信息。下面是如何使用这个方便的工具。

ss命令对netstat

ss代替了不推荐使用的netstat命令,它提供了有关计算机如何与其他计算机、网络和服务通信的详细信息。

ss显示传输控制协议(TCP)、用户数据报协议(UDP)、Unix(进程间)和原始套接字的统计信息。原始套接字在网络OSI级别运行,这意味着TCP和UDP头必须由应用程序软件处理,而不是由传输层处理。Internet控制消息协议(ICMP)消息和ping实用程序都使用原始套接字。

使用ss

您不必安装ss,因为它已经是最新Linux发行版的一部分。但是,它的输出可能非常长,我们已经得到了包含630多行的结果。结果也非常广泛。

正因为如此,我们已经包含了我们获得的结果的文本表示,因为它们不适合屏幕截图。我们对它们进行了修剪,使它们更易于管理。

列出网络连接

在没有命令行选项的情况下使用ss会列出不侦听的套接字。也就是说,它列出了不处于侦听状态的套接字。

要查看此内容,请键入以下内容:

ss

如何在linux上使用ss命令

如何在linux上使用ss命令

Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process u_str ESTAB 0 0 * 41826 * 41827 u_str ESTAB 0 0 /run/systemd/journal/stdout 35689 * 35688 u_str ESTAB 0 0 * 35550 * 35551 ... u_str ESTAB 0 0 * 38127 * 38128 u_str ESTAB 0 0 /run/dbus/system_bus_socket 21243 * 21242 u_str ESTAB 0 0 * 19039 * 19040 u_str ESTAB 0 0 /run/systemd/journal/stdout 18887 * 18885 u_str ESTAB 0 0 /run/dbus/system_bus_socket 19273 * 17306 icmp6 UNCONN 0 0 *:ipv6-icmp *:* udp ESTAB 0 0 192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps

列如下:

  • Netid:插座的类型。在我们的示例中,我们有“u\u str”,一个Unix流,“udp”和“icmp6”,一个ipversion6icmp套接字。您可以在Linux手册页中找到更多关于Linux套接字类型的描述。
  • 状态:套接字所处的状态。
  • Recv-Q:接收的数据包数。
  • Send-Q:发送的数据包数。
  • 本地地址:港口:本地地址和端口(或Unix套接字的等效值)。
  • 同龄人地址:港口:远程地址和端口(或Unix套接字的等效值)。

对于UDP套接字,“状态”列通常为空。对于TCP套接字,它可以是以下之一:

  • 听:只有服务器端。套接字正在等待连接请求。
  • SYN-SENT:仅客户端。此套接字已发出连接请求,正在等待是否接受。
  • SYN-RECEIVED:仅服务器端。此套接字正在接受连接请求后等待连接确认。
  • 建立:服务器和客户端。服务器和客户机之间建立了工作连接,允许在两者之间传输数据。
  • FIN-WAIT-1:服务器和客户端。此套接字正在等待来自远程套接字的连接终止请求,或者等待先前从此套接字发送的连接终止请求的确认。
  • FIN-WAIT-2:服务器和客户端。此套接字正在等待来自远程套接字的连接终止请求。
  • 关闭等待:服务器和客户端。此套接字正在等待本地用户的连接终止请求。
  • 关闭:服务器和客户端。此套接字正在等待来自远程套接字的连接终止请求确认。
  • LAST-ACK:服务器和客户端。此套接字正在等待它发送到远程套接字的连接终止请求的确认。
  • 等待时间:服务器和客户端。这个套接字向远程套接字发送了一个确认,让它知道它收到了远程套接字的终止请求。它现在正在等待确认是否收到了确认。
  • 关闭:没有连接,因此套接字已终止。

正在列出侦听套接字

要查看侦听套接字,我们将添加-l(侦听)选项,如下所示:

ss -l

如何在linux上使用ss命令

Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process nl UNCONN 0 0 rtnl:NetworkManager/535 * nl UNCONN 0 0 rtnl:evolution-addre/2987 * ... u_str LISTEN 0 4096 /run/systemd/private 13349 * 0 u_seq LISTEN 0 4096 /run/udev/control 13376 * 0 u_str LISTEN 0 4096 /tmp/.X11-unix/X0 33071 * 0 u_dgr UNCONN 0 0 /run/systemd/journal/syslog 13360 * 0 u_str LISTEN 0 4096 /run/systemd/fsck.progress 13362 * 0 u_dgr UNCONN 0 0 /run/user/1000/systemd/notify 32303 * 0

这些插座都没有连接,正在监听。“rtnl”是指路由netlink,用于在内核和用户空间进程之间传输信息。

列出所有套接字

要列出所有套接字,可以使用-a(all)选项:

ss -a

如何在linux上使用ss命令

Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process nl UNCONN 0 0 rtnl:NetworkManager/535 * nl UNCONN 0 0 rtnl:evolution-addre/2987 * ... u_str LISTEN 0 100 public/showq 23222 * 0 u_str LISTEN 0 100 private/error 23225 * 0 u_str LISTEN 0 100 private/retry 23228 * 0 ... udp UNCONN 0 0 0.0.0.0:631 0.0.0.0:* udp UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:* ... tcp LISTEN 0 128 [::]:ssh [::]:* tcp LISTEN 0 5 [::1]:ipp [::]:* tcp LISTEN 0 100 [::1]:**tp [::]:*

无论状态如何,输出都包含所有套接字。

列出tcp套接字

也可以应用筛选器,以便仅显示匹配的套接字。我们将使用-t(TCP)选项,因此只列出TCP套接字:

不锈钢-a-t

如何在linux上使用ss命令

列出udp套接字

-u(UDP)选项执行相同类型的过滤操作。这次,我们将只看到UDP套接字:

ss -a -u

如何在linux上使用ss命令

State Recv-Q Send-Q Local Address:Port Peer Address:Port Process UNCONN 0 0 0.0.0.0:631 0.0.0.0:* UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:* UNCONN 0 0 0.0.0.0:60734 0.0.0.0:* UNCONN 0 0 127.0.0.53%lo:domain 0.0.0.0:* ESTAB 0 0 192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps UNCONN 0 0 [::]:mdns [::]:* UNCONN 0 0 [::]:51193 [::]:*

列出unix套接字

要仅查看Unix套接字,可以包括-x(Unix)选项,如下所示:

ss -a -x

如何在linux上使用ss命令

Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process u_str ESTAB 0 0 * 41826 * 41827 u_str ESTAB 0 0 * 23183 * 23184 u_str ESTAB 28 0 @/tmp/.X11-unix/X0 52640 * 52639 ... u_str ESTAB 0 0 /run/systemd/journal/stdout 18887 * 18885 u_str ESTAB 0 0 /run/dbus/system_bus_socket 19273 * 17306

列出原始套接字

原始套接字的筛选器是-w(原始)选项:

ss -a -w

如何在linux上使用ss命令

列出ip版本4套接字

可以使用-4(IPV4)选项列出使用TCP/IP版本4协议的套接字:

ss -a -4

如何在linux上使用ss命令

列出ip版本6套接字

可以使用-6(IPV6)选项启用匹配的IP版本6筛选器,如下所示:

ss -a -6

如何在linux上使用ss命令

按状态列出套接字

可以使用state选项按套接字所处的状态列出套接字。这适用于已建立、侦听或关闭状态。我们还将使用resolve选项(-r),它尝试将网络地址解析为名称,将端口解析为协议。

以下命令将查找已建立的TCP连接,ss将尝试解析这些名称:

ss -t -r state established

如何在linux上使用ss命令

列出了处于已建立状态的四个连接。主机名ubuntu20-04已经解析,第二行的ssh连接显示“ssh”而不是22。

我们可以重复此步骤以查找处于侦听状态的套接字:

ss -t -r state listening

如何在linux上使用ss命令

Recv-Q Send-Q Local Address:Port Peer Address:Port Process 0 128 localhost:5939 0.0.0.0:* 0 4096 localhost%lo:domain 0.0.0.0:* 0 128 0.0.0.0:ssh 0.0.0.0:* 0 5 localhost:ipp 0.0.0.0:* 0 100 localhost:**tp 0.0.0.0:* 0 128 [::]:ssh [::]:* 0 5 ip6-localhost:ipp [::]:* 0 100 ip6-localhost:**tp [::]:*

按协议列出套接字

您可以通过dport和sport选项列出使用特定协议的套接字,这两个选项分别表示目标端口和源端口。

我们键入以下内容以列出在已建立的连接上使用HTTPS协议的套接字(请注意左括号后和右括号前的空格):

ss -a state established ‘( dport = :https or sport = :https )’

如何在linux上使用ss命令

我们可以使用协议名或通常与该协议关联的端口。Secure Shell(SSH)的默认端口是端口22。

我们将在一个命令中使用协议名称,然后使用端口号重复它:

ss -a ‘( dport = :ssh or sport = :ssh )’ ss -a ‘( dport = :22 or sport = :22 )’

如何在linux上使用ss命令

正如所料,我们得到了相同的结果。

列出到特定ip地址的连接

使用dst(destination)选项,我们可以列出到特定目标IP地址的连接。

我们键入以下内容:

ss -a dst 192.168.4.25

如何在linux上使用ss命令

识别过程

要查看哪些进程正在使用套接字,可以使用processs选项(-p),如下所示(注意必须使用sudo):

sudo ss -t -p

如何在linux上使用ss命令

State Recv-Q Send-Q Local Address:Port Peer Address:Port Process ESTAB 0 0 192.168.4.28:57650 54.218.19.119:https users:(("firefox",pid=3378,fd=151)) ESTAB 0 0 192.168.4.28:ssh 192.168.4.25:43946 users:(("sshd",pid=4086,fd=4),("sshd",pid=3985,fd=4))

这向我们展示了在TCP套接字上建立的两个连接正被SSH守护进程和Firefox使用。

值得继承的人

ss命令提供与netstat以前提供的信息相同的信息,但方式更简单、更易访问。您可以查看手册页了解更多选项和提示。

  • 发表于 2021-04-14 18:48
  • 阅读 ( 168 )
  • 分类:互联网

你可能感兴趣的文章

如何在linux上安装和使用powershell

... 在本文中,我将向您展示如何在Linux上安装、运行和使用PowerShell! ...

  • 发布于 2021-03-16 02:34
  • 阅读 ( 316 )

如何在android和termux上使用linux命令行

...许您在Android设备上安装诚实善良的Linux应用程序。下面是如何使用Termux应用程序。 ...

  • 发布于 2021-03-18 07:26
  • 阅读 ( 380 )

如何在windows10上获得linux bash shell

... 如何在windows10上安装linux bash shell ...

  • 发布于 2021-03-21 11:48
  • 阅读 ( 294 )

linux下如何重命名文件

要在Linux中重命名文件吗?如果您知道如何在Windows、macOS或Chrome操作系统中完成这项工作,那么您就知道如何在这里完成这项工作。在大多数版本的Linux上,您只需右键单击一个文件并选择Rename选项。 ...

  • 发布于 2021-03-22 02:48
  • 阅读 ( 284 )

如何在linux中添加用户

想在Linux系统上添加用户但不知道如何添加?在Linux上使用命令行界面管理用户无疑是一项复杂的工作。而对于初学者来说,即使添加新用户也是一场噩梦。 ...

  • 发布于 2021-03-26 23:29
  • 阅读 ( 340 )

初学者的nmap:获得端口扫描的实践经验

... 如何使用nmap扫描网络 ...

  • 发布于 2021-03-28 11:48
  • 阅读 ( 184 )

如何在linux上的bash中设置环境变量

Linux上有多种类型的环境变量。了解如何查看它们,为本地和远程登录创建它们,并使它们在重新启动后仍然有效。 环境变量的工作原理 启动终端窗口及其内部的shell时,会引用一组变量,以确保shell配置正确。这些变量还确...

  • 发布于 2021-04-02 06:44
  • 阅读 ( 230 )

如何在linux上运行和控制后台进程

...umber:向进程发送SIGKILL,信号9,并突然终止它。 相关:如何从Linux终端终止进程

  • 发布于 2021-04-03 03:30
  • 阅读 ( 236 )

如何在Windows10上导出和导入linux系统

...已配置的系统,与其他计算机共享,或者只保存备份。 如何工作 导入和导出功能是在2019年5月的Windows10版本1903更新中添加的。如果尚未安装,则无法使用这些命令行选项。 您只需要为Windows wsl命令提供两个新选项:--export和--i...

  • 发布于 2021-04-03 10:24
  • 阅读 ( 195 )

如何在linux上使用最后一个命令

...来实现什么可以完成使用世界卫生组织的命令。 相关:如何在Linux中确定当前用户帐户 lastb命令 lastb命令值得一提。它从名为btmp的日志中读取数据。关于这个日志名,大家有了更多的共识。“b”代表坏,但“tmp”部分仍有争议...

  • 发布于 2021-04-03 12:45
  • 阅读 ( 151 )
e6491756
e6491756

0 篇文章

相关推荐