Як вбити процес через порт на MacOS, a la fuser -k 9000 / tcp


15

У Linux я можу вбити процес, знаючи лише порт, який він слухає fuser -k 9000/tcp, як це зробити на MacOS?

Відповіді:


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

Перейдіть PortNumberдо фактичного порту, який ви хочете шукати.


2
Мені просто довелося додати -9до кінця, щоб змусити це працювати, але я вважаю, що це пов'язано з характером програми прослуховування та загалом не рекомендованою практикою kill -9.
Кріс

@Kris - lsof -P | grep ': NumberOfPort' | awk '{print $ 2}' | xargs kill -9 працював!
тузи.

12

Додавання прапорів -t та -i до lsof повинно пришвидшити його ще більше, усунувши необхідність grep and awk.

lsof -nti:NumberOfPort | xargs kill -9

2
Працює і є більш стислим, ніж прийнята відповідь!
Великий багатий


2

Додайте -n до lsof, і ви вилучите зворотний пошук DNS з команди та скоротите час виконання з хвилин на секунди.

lsof -Pn | grep ':NumberOfPort' | awk '{print $2}' | xargs kill -9

2

Ви можете побачити, чи є порт, якщо він відкритий цією командою

 sudo lsof -i :8000

де 8000 - номер порту

Якщо порт відкритий, він повинен повернути рядок, що містить ідентифікатор процесу (PID).

Скопіюйте цей PID та

kill -9 PID

Якщо вам потрібно переглянути всі відкриті порти, ви можете виконати сканування портів у програмі Network Utility.


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

0

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


Ви повторюєте іншу відповідь
yass

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.