Привет‚ друзья! Сегодня я хочу поделиться с вами функцией‚ которая поможет вам определить PID процессов‚ занимающих определенный порт на вашем компьютере. Для этого мы воспользуемся командой lsof -i ⁚port‚ которая позволяет нам получить список процессов‚ связанных с определенным портом.
Функция get_pids
Для начала давайте опишем функцию get_pids‚ которая будет принимать порт в качестве аргумента и возвращать список PID процессов‚ занимающих этот порт⁚
from typing import List
def get_pids(port⁚ int) -> List[int]⁚
″″″
Возвращает список PID процессов‚ занимающих переданный порт
@param port⁚ порт
@return⁚ список PID процессов‚ занимающих порт
″″″
if not isinstance(port‚ int)⁚
raise ValueError('Порт должен быть целым числом')
# Вызываем команду lsof -i ⁚port и читаем результат
pids⁚ List[int] []
# Ваш код здесь
return pids
Функция принимает один аргумент ⸺ порт‚ который должен быть целым числом. Если переданное значение не является целым числом‚ функция вызывает ошибку ValueError.
Теперь давайте реализуем код‚ который вызывает команду lsof -i ⁚port и читает результат. Для этого мы будем использовать модуль subprocess⁚
import subprocess
def get_pids(port⁚ int) -> List[int]⁚
″″″
Возвращает список PID процессов‚ занимающих переданный порт
@param port⁚ порт
@return⁚ список PID процессов‚ занимающих порт
″″″
if not isinstance(port‚ int)⁚
raise ValueError('Порт должен быть целым числом')
# Выполняем команду lsof -i ⁚port
process subprocess.Popen(['lsof'‚ '-i'‚ f'⁚{port}']‚ stdoutsubprocess.PIPE)
output‚ _ process.communicate
# Обрабатываем результат
pids⁚ List[int] []
lines output.decode.split('\n')
for line in lines⁚
cols line.split
if len(cols) > 1 and cols[0].isdigit⁚
pids.append(int(cols[0]))
return pids
Мы использовали функцию Popen из модуля subprocess‚ чтобы выполнить команду lsof -i ⁚port и получить ее вывод. Затем мы обработали вывод‚ разделив его на строки и извлекли PID процессов из нужных строк.
Проверка функции
Теперь‚ когда у нас есть функция get_pids‚ давайте проверим ее работу⁚
port 5000
pids get_pids(port)
print(f'Процессы‚ занимающие порт {port}⁚ {pids}')
Запустив этот код‚ вы должны увидеть список PID процессов‚ занимающих порт 5000.
Теперь у нас есть функция get_pids‚ которая позволяет нам быстро определить PID процессов‚ занимающих определенный порт на нашем компьютере. Это очень полезно‚ когда нам нужно найти и завершить процессы‚ которые могут приводить к конфликтам или замедлять работу нашей системы. Надеюсь‚ эта статья была полезной для вас!