获取 Flask 网站的 python 进程 ID 和/或端口号?

获取 Flask 网站的 python 进程 ID 和/或端口号?

我有一些用 python Flask 编写的 Web 应用程序。我知道我在哪个端口上启动了每个端口,并且每个端口都是使用 nohup 启动的。每一个都是从类似的事情开始的nohup python mywebapp.py &

当我查看我的流程时ps,我只看到类似的东西

36697 ?        60-21:36:16 python
 36971 ?        63-19:11:43 python
 37038 ?        65-06:57:22 python
 37312 ?        54-23:33:16 python
 37442 ?        54-09:14:57 python
 37716 ?        47-19:45:17 python
 68019 ?        00:29:24 python
146568 ?        00:20:57 python
146699 ?        00:17:08 python
150622 ?        00:32:20 python

如果我需要停止一个特定的 Web 应用程序,如何从端口号返回到 python 进程 ID,以便我可以处理kill该进程?

答案1

您可以用来lsof查找与已知端口号关联的进程 ID

lsof -i :*port*

或者,您可能希望使用netstat它来显示所有网络连接、路由表、接口统计信息、伪装连接和多播成员资格。

尝试netstat -tulpn

答案2

另一种方法是将其添加到 Flask 应用程序本身。

from os import getpid
print("Creating PID file.")
fh=open("/var/run/yourAppNameWithPort.pid", "w")
fh.write(str(getpid()))
fh.close()

答案3

您还可以获得最后一个后台作业的 PID:

$ FLASK_APP=myapp flask run &
[1] 10947

$ mypid=$!

$ echo $mypid
10947

$ kill $mypid
[1]  + terminated  FLASK_APP=myapp flask run

相关内容