查询和关闭被占用的接口的应用

Author Avatar
Song
发表:2024-09-17 11:30:00
修改:2024-09-24 16:47:30

一、windows平台netstat

1. 查询端口占用的进程

假设你知道要查询的端口号为 8080,可以使用以下命令查询哪个进程占用了该端口:

netstat -ano | findstr :8080

输出结果可能会类似如下:

TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 5678

这里的 5678 是占用该端口的进程 ID (PID)。

2. 定位进程详细信息

使用以下命令查看该进程的详细信息:

tasklist /FI "PID eq 5678"

这将显示进程名称和其它信息,例如:

Image Name                     PID        Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
node.exe                        5678       Console                 1          50,000 K

3. 关闭该进程

如果确认该进程不应该占用端口,可以使用以下命令关闭该进程:

taskkill /PID 5678 /F

/F 选项表示强制终止进程。关闭进程后,该端口将被释放。

注意:在终止进程之前,确保这个进程不是系统或关键应用程序,否则可能会导致系统或应用崩溃。

=============================================================================

二、Linux下netstat命令

1. netstat参数详解

  • netstat -a 可以显示所有网络连接,包括TCP和UDP连接

  • netstat -t 查看TCP连接

  • netstat -u 查看UDP连接

  • netstat -l 显示正在监听状态的端口信息

  • netstat -p 显示与每个网络连接关联的进程ID和进程名

  • netstat -r 显示系统的路由表信息

  • netstat -c:以实时方式持续显示网络连接状态,方便实时监控网络活动。

  • netstat -i:显示系统的网络接口信息,包括接口名称、IP地址、MAC地址等。

  • netstat -s:显示网络统计信息,如收发的数据包数量、错误数量等。

命令中各选项的含义如下:

    -a 显示所有socket,包括正在监听的。
  -c 每隔1秒就重新显示一遍,直到用户中断它。
  -i 显示所有网络接口的信息,格式“netstat -i”。
  -n以网络IP地址代替名称,显示出网络连接情形。
  -r显示核心路由表,格式同“route -e”。
  -t 显示TCP协议的连接情况
  -u 显示UDP协议的连接情况。
  -v显示正在进行的工作。
  -p 显示建立相关连接的程序名和PID。
  -b 显示在创建每个连接或侦听端口时涉及的可执行程序。
  -e 显示以太网统计。此选项可以与 -s 选项结合使用。
  -f 显示外部地址的完全限定域名(FQDN)。
  -o显示与与网络计时器相关的信息。

    -s 显示每个协议的统计。
  -x 显示 NetworkDirect 连接、侦听器和共享端点。
  -y 显示所有连接的 TCP 连接模板。无法与其他选项结合使用。
  interval 重新显示选定的统计,各个显示间暂停的 间隔秒数。按 CTRL+C 停止重新显示统计。如果省略,则 netstat 将打印当前的配置信息一次。


列标题
	Name接口的名字	
	Mtu 接口的最大传输单位	
	Net/Dest 接口所在的网络	
	Address 接口的IP地址	
	Ipkts 接收到的数据包数目	
	Ierrs 接收到时已损坏的数据包数目
	Opkts 发送的数据包数目
	Oeers 发送时已损坏的数据包数目	
	Collisions 由这个接口所记录的网络冲突数目

常见状态
	即连接状态。在原模式中没有状态,在用户数据报协议中也经常没有状态,于是状态列可以空出来。若有状态,通常取值为:

	LISTEN
	
	侦听来自远方的TCP端口的连接请求
	
	SYN-SENT
	
	在发送连接请求后等待匹配的连接请求
	
	SYN-RECEIVED
	
	在收到和发送一个连接请求后等待对方对连接请求的确认
	
	ESTABLISHED
	
	代表一个打开的连接
	
	FIN-WAIT-1
	
	等待远程TCP连接中断请求,或先前的连接中断请求的确认
	
	FIN-WAIT-2
	
	从远程TCP等待连接中断请求
	
	CLOSE-WAIT
	
	等待从本地用户发来的连接中断请求
	
	CLOSING
	
	等待远程TCP对连接中断的确认
	
	LAST-ACK
	
	等待原来的发向远程TCP的连接中断请求的确认
	
	TIME-WAIT
	
	等待足够的时间以确保远程TCP接收到连接中断请求的确认
	
	CLOSED
	
	没有任何连接状态

2. netstat常用选项

  • 显示系统网络状态的所有连接 netstat -a | head

  • 使用管道符查看某个在运行的服务信息 netstat -antup | grep httpd

  • 查看本机监听的端口和进程 netstat -ntpl

=============================================================================

三、Linux下关闭端口和进程

1. netstat查询端口并关闭

1、查看占用端口进程的PID
	netstat -tlnp | grep 端口号
	netstat -tlnp|grep 3306

2、根据PID kill掉相关进程
	kill -9 {PID}

2. ss查询端口对应进程号并关闭

1、查询端口号和pid
	ss -ltnp | grep 端口号
		--注意:-tlnp和-ltnp
	ss -ltnp|grep 3306

2、根据PID kill掉相关进程
	kill -9 {PID}

3. lsof查询进程并关闭

1、查看占用端口进程的PID
	lsof -i:{端口号}
	lsof -i:8088

2、根据PID kill掉相关进程
	kill -9 {PID}

评论