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”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1351149.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复