Подтвердить что ты не робот

Как найти процессы на основе порта и убить их всех?

Найти процессы на основе номера порта и убить их всех.

ps -efl | grep PORT_NUMBER | kill -9 process_found_previously

как завершить последний столбец?

4b9b3361

Ответ 1

Проблема с ps -efl | grep PORT_NUMBER заключается в том, что PORT_NUMBER может также совпадать с другими столбцами на выходе ps (дата, время, pid,...). Потенциальное убийство при запуске root!

Я бы сделал это вместо этого:

PORT_NUMBER=1234
lsof -i tcp:${PORT_NUMBER} | awk 'NR!=1 {print $2}' | xargs kill 

Разбивка команды

  • (lsof -i tcp:${PORT_NUMBER}) - список всех процессов, которые прослушиваются на этом порту tcp
  • (awk 'NR!=1 {print $2}') - игнорировать первую строку, печатать второй столбец каждой строки
  • (xargs kill) - передать результаты в качестве аргумента kill. Их может быть несколько.

Ответ 2

1.) lsof -w -n -i tcp:8080

2.) kill -9 processId

Ответ 3

Предложите использовать команду фьюзера:

fuser -k -TERM -n tcp ${PORT_NUMBER}

Ответ 4

kill $( lsof -i:6000 -t )

Или, если вам нужны разрешения:

sudo kill $( sudo lsof -i:6000 -t )

Ответ 5

... | awk '{ print $4 }' | xargs kill -9

перед тем, как запустить

пожалуйста, протестируйте с помощью "echo" вместо "kill"

Ответ 6

Чтобы убить все процессы, прослушивающие определенный порт, например. порт 8864

kill -9 $ \`lsof -i:8864 -t\`

Замените 8864 на требуемый порт.

Ответ 7

sudo fuser -k 8080/tcp

Легко запомнить один лайнер, который хорошо работает в большинстве или во всех Unix.

Этот синтаксис, вероятно, гораздо более поздний, чем дата вопроса.