Как убить процесс с помощью порта в MacOS, а-ля fuser -k 9000 / tcp

14

В Linux я могу убить процесс, зная только порт, который он прослушивает fuser -k 9000/tcp, как мне сделать то же самое в MacOS?

Kris
источник

Ответы:

19
lsof -P | grep ':PortNumber' | awk '{print $2}' | xargs kill -9

Измените PortNumberна фактический порт, который вы хотите найти.

Stefano
источник
2
Я просто должен был добавить -9к концу, чтобы заставить это работать, но я полагаю, что это связано с характером приложения для прослушивания и вообще не рекомендуемой практикой kill -9.
Крис
@Kris - lsof -P | grep ': NumberOfPort' | awk '{print $ 2}' | xargs kill -9 сработало!
тузы.
11

Добавление флагов -t и -i к lsof должно еще больше ускорить его, устраняя необходимость в grep и awk.

lsof -nti:NumberOfPort | xargs kill -9
Zlemini
источник
2
Работает и лаконичнее принятого ответа!
Большой Богатый
1
ПУТЬ быстрее с этим подходом
daleyjem
2

Добавьте -n к lsof, и вы удалите обратный поиск DNS из команды и сократите время выполнения с минут до секунд.

lsof -Pn | grep ':NumberOfPort' | awk '{print $2}' | xargs kill -9
stevehollx
источник
1
  1. Проверьте ваш порт открыт или нет

sudo lsof -i: {PORT_NUMBER}

COMMAND PID     USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
java    582 Thirumal  300u  IPv6 0xf91b63da8f10f8b7      0t0  TCP *:distinct (LISTEN)

2. Закройте порт, убив PID процесса

sudo kill -9 582
Thirumal
источник
1

Вы можете увидеть, если порт, если открыт по этой команде

 sudo lsof -i :8000

где 8000 - номер порта

Если порт открыт, он должен вернуть строку, содержащую идентификатор процесса (PID).

Скопируйте этот PID и

kill -9 PID

Если вам нужно увидеть все открытые порты, вы можете выполнить сканирование портов в приложении Network Utility.

rohanharikr
источник
0

Вы можете использовать kill -9 $(lsof -i:PORT -t) 2> /dev/null, где PORT - ваш фактический номер порта. Это убьет процесс, который выполняется на вашем данном порту.

ЭПК
источник
Вы повторяете другой ответ
Ясс