3

В OSX, если я наберу netstat, я могу видеть определенные вещи, которые имеют установленное соединение. Я не хочу изменять какие-либо настройки, чтобы закрыть их, я просто хочу иметь возможность закрыть все порты, которые я выберу в терминале. Как ты это делаешь?

2 ответа2

6

Вы не можете закрыть открытый сокет, как это. В идеале вы просто убили бы процесс, который установил соединение.

Проверьте ваши соединения с помощью lsof (netstat не будет показывать процесс), отфильтровывая вывод с любым желаемым состоянием соединения:

lsof -i
lsof -i | grep LISTEN
lsof -i | grep ESTABLISHED

Или, чтобы получить порт, например, 17500:

lsof -i:17500

Тогда просто убей процесс. Например:

$ lsof -i | grep "Skype"
Skype     438 werner    9u  IPv4 0xffffff801dd0c640      0t0  UDP localhost:52218
Skype     438 werner   42u  IPv4 0xffffff80231a7a08      0t0  TCP *:29429 (LISTEN)
Skype     438 werner   43u  IPv4 0xffffff8022e18a40      0t0  UDP *:29429

Убить скайп:

killall Skype

Обратите внимание, что это не помешает установлению соединений - то, что вы должны указать в настройках брандмауэра.

3

Можно также использовать команды fuser или netstat .

Синтаксис fuser

fuser -k -n protocol portno

Пример:

$ fuser -k -n udp 7777

7777/udp:            11774

Номер 11774 - это пид.

пример netstat :

$ sudo netstat -ap | grep :9050

tcp        0      0 localhost:9050          *:*       LISTEN      1613/tor

Число 1613 - это pid, а "tor" - это имя процесса.

Как только у вас есть pid, просто завершите его, используя команду kill или killall

убить пид

или же

killall -9 имя_команды

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