是否有可能在python中杀死正在侦听特定端口的进程,例如8080?
我可以做netstat -ltnp | grep 8080
和kill -9 <pid>
从python执行一个shell命令,但我想知道是否已经有一些模块包含按端口或名称杀死进程的API?
你可以使用psutil python模块.一些未经测试的代码应该指向正确的方向:
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
Run Code Online (Sandbox Code Playgroud)
您可以使用子进程来实现此目的,然后将其杀死。
import os
import signal
from subprocess import Popen, PIPE
port = 1234
process = Popen(["lsof", "-i", ":{0}".format(port)], stdout=PIPE, stderr=PIPE)
stdout, stderr = process.communicate()
for process in str(stdout.decode("utf-8")).split("\n")[1:]:
data = [x for x in process.split(" ") if x != '']
if (len(data) <= 1):
continue
os.kill(int(data[1]), signal.SIGKILL)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6813 次 |
最近记录: |