GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntuで開いているポートを手動で閉じます

開いているポート

多くのソケットプログラミングを行う場合、再コンパイル/再実行時にサーバープログラムが特定のポート番号にバインドできないことがよくあります。これは、そのポート番号がすでに使用されているためです。

ポート番号を手動で閉じるには、最初にポートを開いたままにしているプロセス名/ IDを見つけてから、そのプロセスでkillコマンドを使用する必要があります。

lsof

$ lsof -i :8888
COMMAND  PID        USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    8461 enlightened   11u  IPv6 138527      0t0  UDP *:8888

上記の例では、ポート8888がコマンドjavaとpid 8461によって使用されていることがわかります。
次に、次のいずれかを実行してプロセスを強制終了します

$ kill 8461
$ killall -9 8461
$ killall -9 java

netstat

netstatコマンドを使用して、特定のポート番号を保持しているプロセスを見つけることもできます

$ netstat -u -ap
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
udp        0      0 *:18347                 *:*                                 -
udp        0      0 localhost:11211         *:*                                 -
udp        0      0 localhost:36254         localhost:36254         ESTABLISHED -
udp        0      0 localhost:domain        *:*                                 -
udp        0      0 *:ipp                   *:*                                 -
udp        0      0 *:42038                 *:*                                 -
udp        0      0 *:17500                 *:*                                 4090/dropbox
udp        0      0 *:mdns                  *:*                                 -
udp        0      0 localhost:58797         localhost:7777          ESTABLISHED 9831/ncat
udp        0      0 localhost:42724         localhost:domain        ESTABLISHED -
udp6       0      0 [::]:46282              [::]:*                              -
udp6       0      0 [::]:mdns               [::]:*                              -
udp6       0      0 [::]:9999               [::]:*                              11598/java

ここで閉じたいポートは9999です。netstatは、pid=11598およびコマンド名=java
ここでは、udpポートに-uを使用したことを示しています。 tcpポートの場合、uスイッチは必要ありません。

$ sudo netstat -ap | grep :9050
tcp        0      0 localhost:9050          *:*                     LISTEN      1613/tor

プロセスID/名前が見つかったら、killコマンドで終了します。

$ kill 11598

フューザー

フューザーコマンドを使用して、プログラムのpidを見つけることもできます。 sytanxは

fuser -k -n protocol portno

簡単な例

$ fuser -k -n udp 7777
7777/udp:            11774

Ubuntu
  1. Ubuntu/Debianでポートを開く方法

  2. Ubuntu 20.04でポートを開く-ステップバイステップガイド?

  3. IPtablesを使用してUbuntuとCentOSでポートを開く方法

  1. Ubuntu16.04にOpenRealEstateをインストールする方法

  2. Linuxでポートを閉じる方法は?

  3. Ubuntu で AppImage を開く方法

  1. CentOSでポートを開くためのガイド

  2. Ubuntuを手動で更新する方法は?

  3. Ubuntu 14.04でDNSを手動で編集しますか?