我有一些用 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