web-dev-qa-db-ja.com

Macのターミナルから開いているポートを閉じるにはどうすればいいですか?

クライアントから通信するために、Javaクラスからポート#5955を開きました。完了したらこのポートを閉じる方法また、どのコマンドでポートが開いているか閉じているかがわかります。

156
user1667108
  1. 解放したいポート番号(例:5955)を占めているプロセスID(PID)を確認します。

    Sudo lsof -i :5955
    
  2. PIDを使用して現在ポートを使用しているプロセスを強制終了する

    Sudo kill -9 PID
    
315
Future2020

プロセスを見つけるには

Sudo lsof -i :portNumber

PIDを使用して現在ポートを使用しているプロセスを強制終了する

kill PID

その後、ポートが閉じているかどうかを確認します。そうでない場合は、試してください。

kill -9 PID

前の作業がうまくいかなかった場合、私は次のようにします

Sudo kill -9 PID

安全のためだけに。ポートをどのように開いたかにもよりますが、これは問題にならないかもしれません。

28
oeste

しかし、あなたはポートを開いた、あなたは同じ方法でそれを閉じる。たとえば、ソケットを作成し、それをポート0.0.0.0: 5955にバインドしてlistenと呼び、同じソケットを閉じます。

また、ポートを開いているプロセスを強制終了することもできます。

どのプロセスがポートを開いているのかを知りたい場合は、これを試してください。

lsof -i :5955

ポートが開いているかどうかを知りたい場合は、同じlsofコマンドを実行できます(いずれかのプロセスがそれを開いている場合は開いています。それ以外の場合は開いていません)。

nc localhost 5955

何も出力せずにすぐに戻った場合、ポートは開いていません。

技術的に言えば、これは開いているポートではなく、Host:portの組み合わせであることを言及する価値があります。たとえば、10.0.1.2としてLANに接続している場合は、どちらか一方に影響を与えずにソケットを127.0.0.1:5955または10.0.1.2:5955にバインドすることも、0.0.0.0にバインドすることもできます。両方を同時に処理する5955。 ifconfigコマンドを使用して、コンピュータのすべてのIPv4アドレスとIPv6アドレスを確認できます。

23
abarnert

非常に単純なポート5900を見つける:

Sudo lsof -i :5900

それから59553をPIDとして考えます

Sudo kill 59553
8
flik

この最初のコマンドを使って特定のポートを所有するプロセスを強制終了することもできます。

Sudo netstat -ap | grep :<port_number>

たとえば、このプロセスがport 8000 TCPを保持しているとし、次にコマンドを実行します。

Sudo netstat -ap | grep :8000

プロセス保持ポート8000に対応する行を出力します。

tcp  0  0 *:8000   *:* LISTEN  4683/procHoldingPort

この場合、procHoldingPortはポートを開いたプロセスの名前です4683はそのPID、8000(注)それがTCPであることは)それが保持しているポート番号です(あなたはそれを閉じたいです)。

その後、上記の例に従って、プロセスを強制終了します。

kill  4683

他の人がここで述べたように、それがうまくいかない場合(引数として-9を付けてkillを試すことができます):

kill -9 4683

繰り返しになりますが、できればSIGKILL(-9)を送信しない方が一般的です。

乾杯、

男。

6
Guy Avraham

上記のように、lsofkillと組み合わせて使用​​します。しかし、このプロセスを自動化するための簡単な小さなbashスクリプトを書きました。

このスクリプトを使えば、どこからでもkillport 3000を入力するだけで、ポート3000で実行されているすべてのプロセスが強制終了されます。

https://github.com/xtrasimplicity/killport

5
XtraSimplicity

2018年にここで私はMacOS HighSierraを使ってうまくいった。

Sudo lsof -nPi:yourPortNumber

その後:

Sudo kill -9 yourPIDnumber

3
Gel Sisaed

ポートを開いたプログラムが終了すると、ポートは自動的に閉じられます。このサーバーを実行しているJavaプロセスを強制終了した場合は、それでうまくいくはずです。

1
Barmar

実行中のポートが8000であると仮定して、以下を試してください。

free-port() { kill "$(lsof -t -i :8000)"; }

参照を見つけました ここ

1
Hasan A Yousef

この目的のために関数を作成しました。

function free_port() {
    if [ -z $1 ] 
    then
        echo no Port given
    else
        PORT=$1;
        PID=$(Sudo lsof -i :$PORT) # store the PID, that is using this port 

        if [ -z $PID ] 
        then
            echo port: $PORT is already free.
        else
            Sudo kill -9 $PID # kill the process, which frees the port
            echo port: $PORT is now free.
        fi
    fi
}

free_port 80 # you need to change this port number

このコードブロックを端末にコピーして貼り付けると、目的のポートが解放されます。最後の行でポート番号を変更するのを忘れないでください。

1