Как найти процессы на основе порта и убить их всех?
Найти процессы на основе номера порта и убить их всех.
ps -efl | grep PORT_NUMBER | kill -9 process_found_previously
как завершить последний столбец?
Ответы
Ответ 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.
Этот синтаксис, вероятно, гораздо более поздний, чем дата вопроса.