在python中是否可以终止监听特定端口(例如8080)的进程?

2024-05-16 02:35:06 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中,是否可以终止监听特定端口(例如8080)的进程?

我可以做netstat -ltnp | grep 8080kill -9 <pid>或者从python执行shell命令,但是我想知道是否已经有一个模块包含了通过端口或名称终止进程的API?


Tags: 模块端口命令名称api进程shellpid
3条回答

你可以用psutil python module。一些未经测试的代码应该能为您指明正确的方向:

from psutil import process_iter
from signal import SIGTERM # or SIGKILL

for proc in process_iter():
    for conns in proc.connections(kind='inet'):
        if conns.laddr.port == 8080:
            proc.send_signal(SIGTERM) # or SIGKILL

在端口上终止进程的最简单方法是使用python库:freeport(https://pypi.python.org/pypi/freeport/0.1.9)。一旦安装,只需:

# install freeport
pip install freeport

# Once freeport is installed, use it as follows
$ freeport 3000
Port 3000 is free. Process 16130 killed successfully

实现细节可以在这里获得:https://github.com/yashbathia/freeport/blob/master/scripts/freeport

首先,进程不在端口上运行-进程可以绑定到特定端口。特定端口/IP组合只能在给定时间点由单个进程绑定。

正如Toote所说,psutil为您提供了netstat功能。您还可以使用os.kill发送kill信号(或按Toote的方式)。

相关问题 更多 >