web-dev-qa-db-ja.com

Linuxで特定のポートで動作しているプロセスを強制終了するにはどうすればいいですか?

Tomcatの./shutdown.shディレクトリにある/binを使ってTomcatを閉じようとしました。しかし、サーバーが正しく閉じられていないことがわかりました。そして私は再起動することができませんでした
私のTomcatはポート8080で動作しています。

私は8080で実行されているTomcatプロセスを強制終了したいのです。どのプロセスを強制終了するかを選択するために、まず特定のポート(8080)で実行中のプロセスのリストを表示したいと思います。

536
veer7

コマンドを使う

 Sudo netstat -plten |grep Java

Tomcatとしてgrep Javaを使用すると、プロセスとしてJavaが使用されます。

それはポート番号とプロセスIDでプロセスのリストを表示します

tcp6       0      0 :::8080                 :::*                    LISTEN      
1000       30070621    16085/Java

/Javaの前の番号はプロセスIDです。今すぐプロセスを強制終了するためにkillコマンドを使用してください

kill -9 16085

-9はプロセスが強制終了されることを意味します。

213
veer7

このfuser 8080/tcpはそのポートにバインドされているプロセスのPIDを表示します。

そしてこのfuser -k 8080/tcpはそのプロセスを殺します。

Linux上でのみ動作します。もっと普遍的なのはlsof -i4(またはIPv6の場合は6)の使用です。 

690
nudzo

ポート8080をリッスンするプロセスを一覧表示するには:

lsof -i:8080

ポート8080をリッスンしているプロセスを強制終了するには:

kill $(lsof -t -i:8080)

またはより激しく:

kill -9 $(lsof -t -i:8080)

-9SIGKILL - terminate immediately/hard killシグナルに対応します: キルシグナルのリスト および キルコマンドの-9オプションの目的は? を参照してください。killにシグナルが指定されていない場合、-15またはsoft killとも呼ばれるTERMシグナルが送信されますが、プロセスを強制終了できない場合があります。

552

Lsofコマンドを使用することができます。このようなポート番号を8090とします。

lsof -i:8090

このコマンドは、このポートで開いているプロセスのリストを返します。

何かのようなもの…

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ssh 75782 eoin 5u IPv6 0x01c1c234 0t0 TCP localhost:8090 (LISTEN)

ポートを解放するには、それを使用しているプロセスを強制終了します(プロセスIDは75782です)。

kill -9 75782

これは私のために働きました。これはオリジナルの投稿からのリンクです: link

97
Kop4lyf

私はこのワンライナーを特定のポートのLISTENだけに追加します。

kill -9 $(lsof -t -i:3000 -sTCP:LISTEN)

72
Gal Bracha

ポート番号8080で実行されているプロセスを強制終了したい場合は、まず8080ポートのプロセス識別番号(PID)を見つけてそれを強制終了する必要があります。次のコマンドを実行して8080ポート番号PIDを見つけます。

Sudo lsof -t -i:8080

ここに、

  • Sudo - 管理者特権(ユーザーIDとパスワード)を要求するコマンド。
  • lsof - ファイルのリスト(関連プロセスのリスト表示にも使用されます)
  • -t - プロセスIDのみを表示
  • -i - インターネット接続関連プロセスのみを表示
  • :8080 - このポート番号のプロセスのみを表示

そのため、次のコマンドを使用してPIDを簡単に削除できます。

Sudo kill -9 <PID>

ここに、

  • kill - プロセスを強制終了するためのコマンド
  • -9 - 激しく

次のコマンドを使用して、特定のポート上のプロセスを強制終了するために1つのコマンドを使用できます。

Sudo kill -9 $(Sudo lsof -t -i:8080)

詳細については、次のリンクを参照してください。 Linuxの特定のポートでプロセスを強制終了する方法

56
mahfuz110244

これは<port_number>で実行されているすべてのもののプロセスIDを標準出力に出力します。 

fuser -n tcp <port_number> 

また、標準エラー出力にも出力します。

fuser -n tcp <port_number> 2> /dev/null

これらのプロセスIDをkillコマンドに渡します。

Sudo kill $(fuser -n tcp <port_number> 2> /dev/null)

あなたがそれをたくさんするのであれば、これを関数に入れることもできます。

function killport() {
    Sudo kill $(fuser -n tcp $1 2> /dev/null)
}
36
Brian Peterson

特定のポートで実行されているサービスのPIDを知るには:

netstat -tulnap | grep :*port_num*

そのプロセスの説明が表示されます。今度はkillまたはkill -9 pidを使用してください。簡単に殺されました。

例えば

netstat -ap | grep :8080

tcp6       0      0 :::8080       :::*    LISTEN      1880/Java 

今:

kill -9 1880

すべてのコマンドをrootとして実行することを忘れないでください

31
Sanjay s.

こんな感じで

 Sudo fuser -n tcp -k 8080
17
Adil Abbasi

タスクのPIDを取得して殺します。

lsof -ti:8080 | xargs kill
12
Rahul Garg

Linux :ポートを知っていれば、最初にこのコマンドのPIDを見つけることができます。

netstat -tulpn 

例: -

 Local Address  Foreign Address  State    PID/Program name

  :::3000       :::*             LISTEN    15986/node 

あなたはそれからkillプロセスを取ります。次のコマンドを実行してください。

-9 PIDを殺す

例: -

殺す-9 15986

11
Kundan Kumar
  1. lsof -i tcp:8000 このコマンドは、ポート8000​​で実行中のプロセスに関する情報をリストします。

  2. kill -9 [PID] このコマンドはプロセスを強制終了します

11

Linux :ポートがわかっていればこのコマンドを使えます:

netstat -plten | grep LISTEN | grep 8080

_ aix _ : 

netstat -Aan | grep LISTEN | grep 8080

次に、最初の列(例:f100050000b05bb8)に進み、以下のコマンドを実行します。

rmsock f100050000b05bb8 tcpcb

プロセスを殺します。

9
ben rhouma moez

kill -9 `fuser 8080/tcp|xargs -n 1`、このコマンドはTCP connectionでポート8080で待機するプロセスも強制終了

6
Harshit Garg

システム内の実行中の全ポートのリストとその詳細(pid、addressなど)を知ることができます。

netstat -tulpn

次のコマンドでポート番号を指定すると、特定のポート番号の詳細を知ることができます。

Sudo netstat -lutnp | grep -w '{port_number}'

例:Sudo netstat -lutnp | grep -w '8080'詳細は以下のようになります。

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name

pidを使ってプロセスを強制終了したい場合kill -9 {PID}

ポート番号を使ってプロセスを強制終了したい場合fuser -n tcp {port_number}

アクセスできない場合はSudoを使用してください。

4
YAP

ポート番号を選択し、以下に示すようにnetstatコマンドでgrepを適用します

netstat -ap | grep :7070

コンソール出力

tcp 0 0 ::: 7070 ::: * LISTEN 3332/Java

PIDに基づいてserviceを強制終了します(プロセス識別番号)

kill -9 3332
4
Lova Chittumuri
Sudo apt-get install psmisc (or Sudo yum install psmisc)
Sudo fuser 80/tcp

結果: 80/tcp:1858 1867 1868 1869 1871

プロセスを1つずつ強制終了する

-9 1858を殺す 

1
Fadid

Git Bashの他の方法:

stopProcessByPortNumber() {
port=":${1}"
portStrLine="$(netstat -ano | findstr LISTENING | findstr $port)"
processId="$(grep -oP '(\d+)(?!.*\d)' <<< $portStrLine)"
echo $processId
taskkill -PID $processId -F
}

@ veer7 が言ったことに基づいて: 

あなたが港にいたものを知りたいならば、あなたがそれを殺す前にこれをしてください。

$ Sudo netstat -plten |grep Java
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      1000       906726      25296/Java      
tcp6       0      0 :::8009                 :::*                    LISTEN      1000       907503      25296/Java      
tcp6       0      0 :::8080                 :::*                    LISTEN      1000       907499      25296/Java      
$ ps 25296
  PID TTY      STAT   TIME COMMAND
25296 ?        Sl     0:16 /usr/lib/jvm/Java-8-openjdk-AMD64/bin/Java -Dcatalina.base=/hom

「ps」とnetstatが報告したプロセスの番号を使用

0
JesseBoyd