Можливий дублікат:
пошук процесу, який використовує певний порт в Linux
Я використовую Ubuntu Linux 11.04. Як написати вираз сценарію оболонки, який знайде процес, що працює на порту 4444, а потім знищить процес?
Можливий дублікат:
пошук процесу, який використовує певний порт в Linux
Я використовую Ubuntu Linux 11.04. Як написати вираз сценарію оболонки, який знайде процес, що працює на порту 4444, а потім знищить процес?
Відповіді:
Ви можете використати lsof
для пошуку процесу:
lsof -t -i:4444
перерахував би лише pid процесу прослуховування на порту 4444. Ви можете просто сказати
kill `lsof -t -i:4444`
якби ти був сміливим.
Ви використовуєте lsof
:
# lsof -n | grep TCP | grep LISTEN | grep 4444
Вихід буде чимось на зразок:
pname 16125 user 28u IPv6 4835296 TCP *:4444 (LISTEN)
Де перший стовпець - це ім'я процесу, а другий - ідентифікатор процесу. Потім ви розбираєте вихід, дізнаєтесь, що таке ідентифікатор процесу (PID), і використовуєте kill
команду для його вбивства.
Крім того, ви можете використовувати, netstat -ap
якщо lsof
вона недоступна у вашій системі (як це не в системі зайнятих я працюю регулярно).
kill -9 `netstat -lanp --protocol=inet | grep 4444 | awk -F" " '{print $7}' | awk -F"/" '{print $1}'`
Використовує netstat для списку прослуховувань INET-розеток з числовими портами та батьківськими процесами. Фільтри для рядка 4444, виймає 7-й стовпець (pid / ім'я процесу) і далі розбиває його на "/", щоб отримати pid. Проходить, щоб вбити команду.