当前位置:首页 > 行业动态 > 正文

如何在Linux中使用‘ss’命令来监控网络连接?

Linux 使用 ss 命令来查看 socket 统计信息,它显示了当前系统上所有打开的套接字及其状态。

在现代的Linux系统中,ss(socket statistics)是一个强大的网络监控工具,它能够显示套接字的使用情况,包括TCP、UDP和RAW等类型的套接字,与netstat相比,ss提供了更详细和更快速的信息,本文将详细介绍如何使用ss工具来监控和管理Linux系统的网络连接。

安装`ss`工具

大多数现代Linux发行版默认已经安装了ss工具,如果没有安装,可以通过包管理器进行安装:

Debian/Ubuntu:

    sudo apt-get install iproute2

CentOS/RHEL:

    sudo yum install iproute

Fedora:

    sudo dnf install iproute

`ss`的基本用法

ss命令的基本语法如下:

ss [OPTIONS]

一些常用的选项包括:

-a, --all: 显示所有套接字,而不仅仅是监听状态的套接字。

-t, --tcp: 仅显示TCP套接字。

-u, --udp: 仅显示UDP套接字。

-l, --listening: 仅显示监听状态的套接字。

-n, --numeric: 以数字形式显示地址和端口号。

-r, --resolve: 尝试解析主机名和端口号。

-p, --processes: 显示使用套接字的进程信息。

-s, --summary: 显示摘要信息。

查看所有TCP连接

要查看当前系统上所有的TCP连接,可以使用以下命令:

ss -at

输出示例:

State      Recv-Q Send-Q       Local Address:Port          Peer Address:Port
ESTAB      0      0            192.168.1.100:22             192.168.1.101:54321
ESTAB      0      0            192.168.1.100:80             192.168.1.102:54321

查看所有UDP连接

要查看当前系统上所有的UDP连接,可以使用以下命令:

ss -au

输出示例:

State      Recv-Q Send-Q       Local Address:Port          Peer Address:Port
UNCONN     0      0            192.168.1.100:12345                 *:*
UNCONN     0      0            192.168.1.100:53535               *:

查看监听状态的TCP套接字

要查看所有监听状态的TCP套接字,可以使用以下命令:

ss -ltn

输出示例:

State      Recv-Q Send-Q       Local Address:Port               Peer Address:Port
LISTEN     0      128          0.0.0.0:22                       0.0.0.0:*
LISTEN     0      100          127.0.0.1:25                     0.0.0.0:*
LISTEN     0      128          [::]:22                           [::]:

查看指定端口的连接

要查看特定端口(例如端口80)上的连接,可以使用以下命令:

ss -tn 'sport = :80'

输出示例:

State      Recv-Q Send-Q       Local Address:Port          Peer Address:Port
ESTAB      0      0            192.168.1.100:80            192.168.1.102:54321
ESTAB      0      0            192.168.1.100:80            192.168.1.103:54321

查看特定进程的套接字

要查看特定进程(例如进程ID为1234)使用的套接字,可以使用以下命令:

ss -p -t state established '( dport = :80 or sport = :80 )' -o state listen src :::22 | grep 1234

输出示例:

USER       COMMAND           %CPU %MEM    VSZ  RSS   STARTED              TIME     STATE   PATH
root       sshd              0.0  0.0   456   123   Oct 23 14:32:12       00:00:00 ESTABLISHED  /usr/sbin/sshd

使用`ss`命令生成报告

你可以将ss命令的输出重定向到一个文件中,以便稍后分析或生成报告:

ss -s > /tmp/ss_report.txt

定时任务监控网络连接

为了定期监控网络连接,可以将ss命令添加到crontab中,编辑crontab文件:

crontab -e

添加以下行以每5分钟运行一次ss命令并将结果保存到日志文件中:

*/5 * * * * /usr/bin/ss -at > /var/log/ss_output.log 2>&1

相关问答FAQs

Q1: 如何过滤特定IP地址的连接?

A1: 你可以使用grep命令结合ss命令来过滤特定IP地址的连接,要过滤出包含IP地址192.168.1.100的连接,可以使用以下命令:

ss -at | grep "192.168.1.100"

Q2: 如何查看某个端口被哪些进程占用?

A2: 你可以使用lsof命令来查看某个端口被哪些进程占用,要查看端口80被哪些进程占用,可以使用以下命令:

sudo lsof -i :80

输出示例:

COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx    1234 root    6u  IPv4  12345      0t0  TCP *:http (LISTEN)
nginx    5678 www-data  6u  IPv4  12345      0t0  TCP *:http (LISTEN)

到此,以上就是小编对于“linux 使用ss”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。

0