服务器端口查询总结

本文介绍了Linux系统中用于监控进程和网络状态的三个重要命令:lsof用于查看进程打开的文件,包括已删除文件和网络连接;netstat展示网络连接状态,如端口监听和协议信息;SS命令则提供了一种更快速、详细的方式来查看TCP和套接字的状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、lsof命令

lsof 是 List Open File 的缩写, 它主要用来获取被进程打开文件的信息,比如: 普通文件,目录,特殊的块文件,管道,socket套接字,设备,Unix域套接字等等,同时,它还可以结合 grep 以及 ps 命令进行更多的高级搜索。

1、安装

lsof 命令默认是没有安装的,而且它的使用需要有root权限或者赋予普通用于sudo权限:
默认未安装
使用以下 命令安装。

yum install -y lsof

开始安装:
开始安装lsof包
安装完毕安装完毕

2、用法

(1)列出所有打开文件

不带任何参数执行 lsof 命令会输出当前所有活跃进程打开的所有文件:
使用lsof命令
由于lsof命令会输出很多信息,所以也可以使用了 lsof | more 来分页显示命令输出结果:

lsof | more

lsofmore命令
输出结果中,第一列中 systemd 的进程ID是 1,它是一个守护进程
其中列 COMMAND 、PID、USER 分别表示进程名、进程ID、所属用户
列 FD 是文件描述符,下面是可能的类型以及说明:

FD说明
cwd当前目录
rtdroot目录
txttxt文件
mem内存映射文件

列 TYPE 是文件类型,下面是可能的值以及说明:

TYPE说明
DIR目录
REG普通文件
CHR字符
a_inodeInode文件
FIFO管道或者socket文件
netlink网络
unknown未知

列 DEVICE 表示设备ID、列 SIZE/OFF 表示进程大小、列 NODE 表示文件的Inode号、列NAME 表示路径或者链接

(2)找出打开着但已被删除了的文件

有这样一个场景,一个进程被打开后,这个进程文件被新一版本的进程文件替代后再次被打开,虽然旧版本的进程文件被删除了,但是旧版本的进程然后是被打开运行着的,,它仍然占用系统的资源,我们可以结合grep命令找出这种正在运行,但是已经被删除的进程:

lsof | grep deleted

找出已删除的进程

(3)列出所有打开了的网络文件(可在查询端口使用):

lsof -i

列出在指定端口上打开的文件:
使用lsof -i:端口号可以获得所有在指定端口号上打开的文件:

lsof -i:19010

查询指定端口

二、netstat命令

用法

(1)列出所有端口

netstat -a

(2)使用ip地址列出所有处理监听状态的TCP端口,且加上程序名

netstat -atnlp

列出所有TCP端口
说明:

ITEM说明
Proto协议名(tcp协议还是udp协议)
recv-Q网络接收队列:表示收到的数据已经在本地接收缓冲,但是还有多少没有被进程取走,Q是Queue的缩写
send-Q对方没有收到的数据或者说没有Ack的,还是本地缓冲区。如果发送队列Send-Q不能很快的清零,可能是有应用向外发送数据包过快,或者是对方接收数据包不够快;Recv-Q和Send-Q这两个值通常应该为0,如果不为0可能是有问题的。短暂的Send-Q队列发送pakets非0是正常状态。
Local Address1)Local Address 部分的0.0.0.0:48888表示监听服务器上所有ip地址的所有(0.0.0.0表示本地所有ip),比如你的服务器是有172.172.230.210和172.172.230.11两个ip地址,那么0.0.0.0:48888此时表示监听172.172.230.210,172.172.230.211,127.0.0.1三个地址的48888端口;2)127.0.0.1:19020这个表示监听本机的loopback地址的19020端口(如果某个服务只监听了回环地址,那么只能在本机进行访问,无法通过tcp/ip 协议进行远程访问);3)10.10.220.142:19010这是因为我们在启动的时候指定了10.10.220.142:19010参数,如果不指定的话,会监听0.0.0.0:19010
Foreign Address与本机端口通信的外部socket。显示规则与Local Address相同
State链路状态,共有12中可能的状态,前面11种是按照TCP连接建立的三次握手和TCP连接断开的四次挥手过程来描述的。

state列常见状态额外说明:
1、LISTEN :首先服务端需要打开一个socket进行监听,状态为LISTEN./*The socket is listening for incoming connections. 侦听来自远方TCP端口的连接请求 /
2、ESTABLISHED:代表一个打开的连接,双方可以进行或已经在数据交互了。/
The socket has an established connection. 代表一个打开的连接,数据可以传送给用户 */
3、SYN_SENT:/*The socket is actively attempting to establish aconnection. 在发送连接请求后等待匹配的连接请求 /
4、SYN_RECV:服务端应发出ACK确认客户端的 SYN,同时自己向客户端发送一个SYN.之后状态置为SYN_RECV/
A connection request has been received from the network. 在收到和发送一个连接请求后等待对连接请求的确认 */

(3)显示所有TCP的统计信息

netstat -rn

输出:
显示所有tcp统计信息
说明:
Destination:目标网络或者主机。
Gateway:网关地址,如果没有设置则为*。
Genmask:目标网络掩码;如果默认路由则用"0.0.0.0"。

三、SS命令

1、说明:

ss 命令用来显示处于活动状态的套接字信息。ss 命令可以用来获取 socket 统计信息,它可以显示和 netstat 类似的内容。但ss的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快速更高效。
当服务器的 socket 连接数量变得非常大时,无论是使用 netstat 命令还是直接cat /proc/net/tcp,执行速度都会很慢。
命令格式:

ss [options] [ FILTER ]

2、常见用法

(1)显示所有 TCP 连接。

ss -t -a

显示所有TCP连接

(2)显示套接字使用概况

ss -s

(3)显示监听状态的套接字

ss -l

(4)查看指定端口的信息

ss -lp | grep 9088
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值