2016-07-17 2 views
1

Когда я хочу, чтобы убить процесс на данном порту (скажем 8000) Я использую команду:Закрыть многие порты сразу

kill -9 `lsof -i :8000` 

Есть ли способ, чтобы закрыть много портов одновременно? Я должен убить процесс на портах 8000-9000, и делать это вручную довольно неэффективно.

+0

Вы знакомы с скриптами bash? Если вы создаете скрипт выше, возьмите диапазон портов в качестве входных параметров и манипулируйте строкой, которую вы имеете выше, чтобы использовать свой входной параметр, вы дома :) – mattias

+0

@mattias Я не знаю, Знаю много, но если вы знаете какой-нибудь учебник, я с удовольствием узнаю! – Ziva

+0

Является ли ваша команда выше работы? Какую версию OS X вы используете? – mattias

ответ

1

Хорошо, сначала попробуйте дать вам рабочий сценарий для этого.

#!/bin/bash 
for i in {8000..9000} 
do 
    kill -kill `lsof -t -i tcp:$i` 
done 

Поместите выше в .sh файл, myportrangekiller.sh и сделать его исполняемым, chmod +x myportrangekiller.sh и запустить его с $ ./myportrangekiller.sh от вашего терминала. Это будет проходить через порты 8000-9000 и уничтожить эти процессы.

Hard для меня, чтобы проверить, работает ли он, как я получаю следующее при работе вашей команды в OS X El Capitan,

убийство: использование: убить [-s sigspec | -n signum | -sigspec] pid | jobspec ... или убить -l [sigspec]

Btw, я немного изменил вашу команду, от lostlost до, вроде предполагается, что вы неправильно имя, что бинарные в.

+2

Я думаю, что вы, вероятно, не хотите создавать и запускать тысячи процессов lsof, и вам может быть лучше использовать ряд портов с 'lsof -t -i tcp: 8000-9000' –

+0

Ну, тогда это просто один лайнер и не нужно для моей неудачной попытки зациклиться на начальной команде OP. @ Ziva, можете ли вы проверить, что выше комментарий работает? – mattias

Смежные вопросы