OSXでnetstatと入力すると、接続が確立されている特定のものが表示されます。これらを閉じるために設定を変更したくはありません。ターミナルで選択したポートをすべて閉じることができるようにしたいだけです。どうやってそれをしますか?
このように開いているソケットを閉じることはできません。理想的には、接続を確立したプロセスを強制終了するだけです。
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
Skypeを殺す:
killall Skype
ただし、これによって接続が確立されるのを防ぐことはできません。ファイアウォールの設定で指定する必要があります。
fuser
またはnetstat
コマンドを使用することもできます。
fuser
構文は
fuser -k -n protocol portno
例:
$ fuser -k -n udp 7777
7777/udp: 11774
番号11774はpidです。
netstat
例:
$ Sudo netstat -ap | grep :9050
tcp 0 0 localhost:9050 *:* LISTEN 1613/tor
番号1613はpidで、「tor」はプロセス名です。
Pidを取得したら、killまたはkillallコマンドを使用して終了します。
pidを殺す
または
killall -9 command_name