Bleh еще не может комментировать,
Выше правильно, но если вы используете pgrep, у вас меньше средств для очистки. Он возвращает только pid (а не всю строку ps).
p = subprocess.Popen("sudo kill -9 $(sudo ps aux| pgrep '(" + mac_host + ")')", shell=True, stdout=subprocess.PIPE)
Edit:
Если вы хотите попробовать без использования команд subprocess / shell, вы можете попробовать что-то например,
import os
from signal import SIGKILL
pids = [pid for pid in os.listdir('/proc') if pid.isdigit()]
for pid in pids:
if mac_host in open(os.path.join('/proc', pid, 'cmdline'), 'rb').read():
os.kill(int(pid), SIGKILL)
Может понадобиться регулярное выражение, если «if mac_host in» не выполняет свою работу.
Используемые источники:
how-to -terminate-process-from-python-using-pid