一、问题的提出
如果没有接触过web,很多初学者最容易犯的错就是端口占用的问题,或者涉及到进程相关的信息,笔者给多所重点本科、双一流进行过AI场景落地项目实战,不管是在云端、边缘端还是边云结合端,避免不了web数据展现,数据的管理等需要web的操作,哪怕211高材生大多数遇到实操问题,都避免不了web调试的复杂性,因为如果是软件项目必然整合机器学习算法、数据集(云端多数情况为大数据,边缘侧可能是小样本数据)、数据库(包括关系型数据库、多数为非关系数据和知识库)、web前端数据展现、web后端数据处理和分布式数据处理。这里我们先看一些最基本的操作。
二、windows的dos端
(1)查看所有活动的网络连接和监听端口(包括 PID)
etstat -ano
参数说明:
-a:显示所有连接和监听端口
-n:以数字形式显示地址和端口号
-o:显示拥有每个连接的进程 ID (PID)
(2)查看特定协议的连接(如只查看 TCP 连接)
netstat -ano -p tcp
(3)查看特定端口号的连接(如查看 8080 端口)
netstat -ano | findstr “:8080”
假设我运行了: http://127.0.0.1:8006
那么执行:
netstat -ano | findstr “:8006“
假设输出结果如下所示:
更详细的如下:
对上述结果加以解释:
【1】第1行:{ TCP 0.0.0.0:8006 0.0.0.0:0 LISTENING 1234 }
进程ID 1234 正在所有网络接口上监听8006端口,通常这是服务端应用程序的配置。
【2】第2行:{ TCP 192.168.1.5:8006 203.0.113.42:52432 ESTABLISHED 5678 }
本地计算机(192.168.1.5)的8006端口与远程主机(203.0.113.42)的52432端口之间有一个活跃的TCP连接,由进程ID 5678维护。
【3】第3行:{ TCP [::]:8006 [::]:0 LISTENING 1234 }
同一个进程(ID 1234)也在IPv6的所有网络接口上监听8006端口。
【4】第4行:{ UDP 0.0.0.0:8006 *:* 8910 }
进程ID 8910 正在所有网络接口上监听UDP 8006端口。
(4)查看特定进程 ID 的连接(如查看 PID 为 1234 的进程)
netstat -ano | findstr “8808”
三、DOS下kill某个进程
在Windows的DOS命令行下,可以通过端口号查找进程ID(PID),然后根据PID杀死进程。
基本命令流程:
【1】查找占用特定端口的进程ID:
netstat -ano | findstr “:端口号”
【2】查看进程详细信息(可选):
tasklist | findstr “PID号”
【3】杀死进程:
taskkill /PID PID号 /F
参数说明:
netstat -ano:
-a 显示所有连接和监听端口
-n 以数字形式显示地址和端口号
-o 显示拥有每个连接的进程ID
taskkill:
/PID 指定要终止的进程ID
/F 强制终止进程
/T 终止指定进程及其启动的任何子进程
示例1:杀死占用8000端口的进程
【1】查找占用8000端口的进程ID
netstat -ano | findstr “:8000”
假设输出如下:
TCP 0.0.0.0:8000 0.0.0.0:0 LISTENING 1234
【2】查看进程详细信息(可选)
tasklist | findstr “1234”
【3】强制杀死进程
taskkill /PID 1234 /F
示例2:杀死占用3306端口(MySQL默认端口)的进程
【1】查找占用3306端口的进程ID
netstat -ano | findstr “:3306”
假设输出如下:
TCP 127.0.0.1:3306 0.0.0.0:0 LISTENING 4567
【2】查看进程详细信息(可选)
tasklist | findstr “4567”
【3】强制杀死进程及其子进程
taskkill /PID 4567 /F /T
四、Linux下kill某个进程
在Linux系统中,可以通过端口号查找进程ID(PID),然后根据PID杀死进程。
基本命令流程:
【1】查找占用特定端口的进程ID:
lsof -i :端口号
或
netstat -tulnp | grep :端口号
【2】查看进程详细信息(可选):
ps -p PID号 -o pid,ppid,cmd
【3】杀死进程:
kill -9 PID号
或
pkill -9 -f “进程名”
常用参数说明:
lsof -i :端口号:列出使用指定端口的进程
netstat -tulnp:
-t 显示TCP连接
-u 显示UDP连接
-l 显示监听端口
-n 以数字形式显示地址和端口
-p 显示进程信息
kill -9:强制终止进程(SIGKILL信号)
pkill:通过进程名杀死进程
示例1:杀死占用8080端口的Java进程
# 1. 查找占用8080端口的进程ID
sudo lsof -i :8080
# 假设输出如下:
# COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
# java 12345 root 46u IPv6 123456 0t0 TCP *:8080 (LISTEN)
# 2. 查看进程详细信息(可选)
ps -p 12345 -o pid,ppid,cmd
# 3. 强制杀死进程
sudo kill -9 12345
# 或者使用netstat查找
sudo netstat -tulnp | grep :8080
# 输出示例:tcp6 0 0 :::8080 :::* LISTEN 12345/java
sudo kill -9 12345
示例2:杀死占用3306端口的MySQL进程
# 1. 查找占用3306端口的进程ID
netstat -tulnp | grep :3306
# 假设输出如下:
# COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
# mysqld 6789 mysql 12u IPv4 234567 0t0 TCP *:3306 (LISTEN)
# 2. 查看进程详细信息(可选)
ps -p 6789 -o pid,ppid,cmd
# 3. 强制杀死进程
kill -9 6789
# 或者使用pkill通过进程名杀死
pkill -9 -f “mysqld”
暂无评论内容