AI辅助开发:查看FastAPI的web运行的端口、进程信息

一、问题的提出

如果没有接触过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”

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容