Возможный дубликат:
Нахождение процесса, использующего определенный порт в 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
недоступен в вашей системе (так как он не в системе busybox, с которой я регулярно работаю).
kill -9 `netstat -lanp --protocol=inet | grep 4444 | awk -F" " '{print $7}' | awk -F"/" '{print $1}'`
Использует netstat для вывода списка прослушивающих сокетов INET с числовыми портами и родительскими процессами. Фильтрует строку 4444, вынимает 7-й столбец (pid / имя процесса) и далее разделяет его на «/», чтобы получить pid. Проходит это, чтобы убить команду.