Як знайти (і вбити) процес, що працює на певному порту? [дублікат]


30

Можливий дублікат:
пошук процесу, який використовує певний порт в Linux

Я використовую Ubuntu Linux 11.04. Як написати вираз сценарію оболонки, який знайде процес, що працює на порту 4444, а потім знищить процес?


Я не думаю, що це дублікат, оскільки він запитує, як вбити, а не знайти процес на порту: fuser -k 9000 / tcp
Kris

Відповіді:


47

Ви можете використати lsofдля пошуку процесу:

lsof -t -i:4444

перерахував би лише pid процесу прослуховування на порту 4444. Ви можете просто сказати

kill `lsof -t -i:4444`

якби ти був сміливим.


14
+1 для "якби ти був сміливим".
Містер Шикаданс

7

Ви використовуєте lsof:

# lsof -n | grep TCP | grep LISTEN | grep 4444

Вихід буде чимось на зразок:

pname 16125 user 28u IPv6 4835296 TCP *:4444 (LISTEN)

Де перший стовпець - це ім'я процесу, а другий - ідентифікатор процесу. Потім ви розбираєте вихід, дізнаєтесь, що таке ідентифікатор процесу (PID), і використовуєте killкоманду для його вбивства.


1
Я ніколи раніше не чув про lsof. Переглядаючи сторінку чоловіка, це здається неймовірно корисним. Дякую!

все в Linux - це файл, і lsof дозволяє вам знаходити файли, так що ... так, дуже корисно
jcollum


2
kill -9 `netstat -lanp --protocol=inet | grep 4444 | awk -F" " '{print $7}' | awk -F"/" '{print $1}'`

Використовує netstat для списку прослуховувань INET-розеток з числовими портами та батьківськими процесами. Фільтри для рядка 4444, виймає 7-й стовпець (pid / ім'я процесу) і далі розбиває його на "/", щоб отримати pid. Проходить, щоб вбити команду.


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