29

Возможный дубликат:
Нахождение процесса, использующего определенный порт в Linux

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

4 ответа4

47

Вы можете использовать lsof чтобы найти процесс:

lsof -t -i:4444

перечислил бы только pid процесса, прослушивающего порт 4444. Вы могли бы просто сказать

kill `lsof -t -i:4444`

если бы ты был смелым

6

Вы используете lsof:

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

Вывод будет примерно таким:

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

Где первый столбец - это имя процесса, а второй столбец - это идентификатор процесса. Затем разобрать вывод, выяснить , что идентификатор процесса (PID) и использовать его kill команду , чтобы убить его.

2

В качестве альтернативы вы можете использовать netstat -ap если lsof недоступен в вашей системе (так как он не в системе busybox, с которой я регулярно работаю).

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

Использует netstat для вывода списка прослушивающих сокетов INET с числовыми портами и родительскими процессами. Фильтрует строку 4444, вынимает 7-й столбец (pid / имя процесса) и далее разделяет его на «/», чтобы получить pid. Проходит это, чтобы убить команду.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .