查看端口占用情况
在Linux使用过程中,需要了解当前系统开放了哪些端口,并且要查看开放这些端口的具体进程和用户,可以通过netstat命令进行简单查询
netstat命令各个参数说明如下:
-t : 指明显示TCP端口
-u : 指明显示UDP端口
-l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)
-p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序。
-n : 不进行DNS轮询,显示IP(可以加速操作)
即可显示当前服务器上所有端口及进程服务,于grep结合可查看某个具体端口及服务情况··
netstat -ntlp //查看当前所有tcp端口·
netstat -ntulp |grep 80 //查看所有80端口使用情况·
netstat -ntulp | grep 3306 //查看所有3306端口使用情况
对于 Linux 系统管理员来说,清楚某个服务是否正确地绑定或监听某个端口,是至关重要的。如果你需要处理端口相关的问题,这篇文章可能会对你有用。
端口是 Linux 系统上特定进程之间逻辑连接的标识,包括物理端口和软件端口。由于 Linux 操作系统是一个软件,因此本文只讨论软件端口。软件端口始终与主机的 IP 地址和相关的通信协议相关联,因此端口常用于区分应用程序。大部分涉及到网络的服务都必须打开一个套接字来监听传入的网络请求,而每个服务都使用一个独立的套接字。
套接字是和 IP 地址、软件端口和协议结合起来使用的,而端口号对传输控制协议(TCP)和用户数据报协议(UDP)协议都适用,TCP 和 UDP 都可以使用 0 到 65535 之间的端口号进行通信。
以下是端口分配类别:
0 – 1023: 常用端口和系统端口
1024 – 49151: 软件的注册端口
49152 – 65535: 动态端口或私有端口
可以使用以下六种方法查看端口信息。
ss:可以用于转储套接字统计信息。
sudo ss -tunlp | grep “:7001”
LISTEN 0 128 [::ffff:10.56.68.82]:7001 : users:((“java”,pid=64237,fd=702))
常用选项
-h, –help 帮助
-V, –version 显示版本号
-t, –tcp 显示 TCP 协议的 sockets
-u, –udp 显示 UDP 协议的 sockets
-x, –unix 显示 unix domain sockets,与 -f 选项相同
-n, –numeric 不解析服务的名称,如 “22” 端口不会显示成 “ssh”
-l, –listening 只显示处于监听状态的端口
-p, –processes 显示监听端口的进程(Ubuntu 上需要 sudo)
-a, –all 对 TCP 协议来说,既包含监听的端口,也包含建立的连接
-r, –resolve 把 IP 解释为域名,把端口号解释为协议名称
netstat:可以显示打开的套接字列表。
与ss相同,已经过时
lsof:可以列出打开的文件。
例如:
lsof -i :7001
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 64237 用户名称 702u IPv6 10665459 0t0 TCP LIN-E399F775534.zte.intra:afs3-callback (LISTEN)
fuser:可以列出那些打开了文件的进程的进程 ID。
nmap:是网络检测工具和端口扫描程序。
systemctl:是 systemd 系统的控制管理器和服务管理器。
systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2022-09-08 00:15:34 CST; 18h ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 1604 (sshd)
Tasks: 1 (limit: 52428)
Memory: 1.4M
CGroup: /system.slice/sshd.service
└─1604 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
9月 08 00:15:34 LIN-E399F775534.zte.intra systemd[1]: Starting OpenSSH server daemon…
9月 08 00:15:34 LIN-E399F775534.zte.intra sshd[1604]: Server listening on 0.0.0.0 port 33322.
9月 08 00:15:34 LIN-E399F775534.zte.intra systemd[1]: Started OpenSSH server daemon.
9月 08 00:15:34 LIN-E399F775534.zte.intra sshd[1604]: Server listening on :: port 33322.
使用 netstat 命令
netstat 能够显示网络连接、路由表、接口统计信息、伪装连接以及多播成员。
默认情况下,netstat 会列出打开的套接字。如果不指定任何地址族,则会显示所有已配置地址族的活动套接字。但 netstat 已经过时了,一般会使用 ss 来替代。