PORT AND PROCESS

端口

一、Windows环境

查看端口的情况

  • 查找所有运行的端口
1
netstat -ano			              #该命令列出所有端口的使用情况
  • 查找哪些进程在使用哪一个端口
1
netstat -ano | findstr :端口号			#该命令用于查找哪一个进程在使用这个端口号

example

1
2
3
4
5
6
7
PS C:\Users\Administrator> netstat -ano | findstr :80
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 19172
TCP 10.0.166.165:49154 157.255.5.249:8080 ESTABLISHED 10528
TCP 10.0.166.165:52123 111.30.170.28:8081 TIME_WAIT 0
TCP [::]:80 [::]:0 LISTENING 19172
UDP [fe80::f006:80df:58cd:e046%12]:1900 *:* 7880
UDP [fe80::f006:80df:58cd:e046%12]:60409 *:* 7880

TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 19172

  • 这表示有一个进程正在监听所有IPV4地址的端口80,进程id为19172。通常这表示一个Web服务器正在运行并且等待连接。

TCP 10.0.166.165:49154 157.255.5.249:8080 ESTABLISHED 10528

  • 这表示有一个从本地地址10.0.166.165的49154端口到远程ip地址157.255.5.249的8080端口的tcp连接已经建立进程id为10528。

TCP 10.0.166.165:52123 111.30.170.28:8081 TIME_WAIT 0

  • 这表示有一个从本地IP地址10.0.166.165的52123端口到远程IP地址111.30.170.28的8081端口的TCP连接已经关闭,目前处于TIME_WAIT状态。

UDP [fe80::f006:80df:58cd:e046%12]:1900 *:* 7880

  • 这表示有一个进程正在监听IPv6地址的1900端口(通常用于UPnP),进程ID为7880。

为什么输出80端口的有关联的信息会输出其他的端口的一些信息?

尽管这个连接的端口是8080而不是80,但它可能与80端口的服务有关联,特别是如果它们属于同一个应用程序或服务,并且8080端口被用作80端口的替代或补充。

查看进程的情况

get-process命令

1
2
-name 名字
-id 进程id

example

1
2
3
4
PS C:\Users\Administrator> get-process -id 19172             #查看这个进程详细信息
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
540 32 458936 104900 2.20 19172 9 java
1
stop-process -id 19172			#停止这个进程

二、Linux环境

查看端口的情况

ss命令(socket statistics)

后面可跟参数 释义 详解
-a –all 显示所有套接字
-l –listening 显示监听状态的套接字
-e –extended 显示详细的套接字信息
-m –memory 显示套接字的内存使用情况
-p –processes 显示使用套接字的进程
-i –info 显示 TCP内部信息
-s –summary 显示套接字使用概况
-4 –ipv4 仅显示IPv4的套接字
-6 –ipv6 仅显示IPv6的套接字
-t –tcp 仅显示 TCP套接字

过滤出监听在某一个端口的套接字信息

ss -al |grep :3355

1
2
3
kyclnx@uuu:~$ ss -al |grep :3355
tcp LISTEN 0 4096 0.0.0.0:3355 0.0.0.0:*
tcp LISTEN 0 4096 [::]:3355 [::]:*

4096是缓冲区的大小(接受缓冲区的大小)。

lsof命令

这个命令的参数很杂,这里讲一下我主要的用途吧。要用管理员的权限使用此命令

首先我在Ubuntu上的Docker面开了一个tomcat端口,然后映射到主机3355端口,我想查看这个3355端口的进程号。

1、找到套接字的文件描述符。

1
2
3
4
5
6
7
8
9
kyclnx@uuu:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
820de0cf8341 tomcat "catalina.sh run" 2 hours ago Up 2 hours 0.0.0.0:3355->8080/tcp, :::3355->8080/tcp inspiring_mccarthy
kyclnx@uuu:~$ lsof -i:3355 #普通用户无法使用这个命令
kyclnx@uuu:~$ sudo lsof -i:3355
[sudo] password for kyclnx:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 3650 root 4u IPv4 51230 0t0 TCP *:3355 (LISTEN)
docker-pr 3656 root 4u IPv6 51235 0t0 TCP *:3355 (LISTEN)

为什么开启一个监听的端口会有两个进程?

分别对应于IPv4(docker-pr 3650)和IPv6(docker-pr 3656)地址。这意味着,无论客户端使用IPv4还是IPv6地址连接到端口3355,Docker容器都可以接收和处理请求。


PORT AND PROCESS
http://example.com/2024/08/31/Linux-PORT/
作者
nianjx
发布于
2024年8月31日
许可协议