特定のポートで実行されているプロセスを見つける(および強制終了する)にはどうすればよいですか?[複製]


30

重複の可能性:
Linuxで特定のポートを使用しているプロセスを見つける

Ubuntu Linux 11.04を使用しています。ポート4444で実行されているプロセスを検出してプロセスを強制終了するシェルスクリプト式を作成するにはどうすればよいですか?


ポート上のプロセスを見つけるのではなく、殺す方法を尋ねているので、これは重複しているとは思わない:fuser -k 9000 / tcp-
クリス

回答:



7

あなたが使用しますlsof

# lsof -n | grep TCP | grep LISTEN | grep 4444

出力は次のようになります。

pname 16125 user 28u IPv6 4835296 TCP *:4444 (LISTEN)

ここで、最初の列はプロセス名であり、2番目の列はプロセスIDです。次に、出力を解析し、プロセスID(PID)を確認し、killコマンドを使用して強制終了します。


1
以前にlsofについて聞いたことがありませんでした。マニュアルページを見ると、非常に便利なようです。ありがとう!

Linuxのすべてはファイルであり、lsofを使用するとファイルを見つけることができます。そう、非常に便利です
jcollum

2

あるいは、システムで使用できないnetstat -ap場合に使用することもできますlsof(私が定期的に使用しているbusyboxシステムではないため)。


いいですね、私が取り組んでいたbusyboxから派生したdockerイメージでなぜこれが機能しないのかと思っていました
jcollum

2
kill -9 `netstat -lanp --protocol=inet | grep 4444 | awk -F" " '{print $7}' | awk -F"/" '{print $1}'`

netstatを使用して、数値ポートと親プロセスを持つリスニングINETソケットをリストします。文字列4444のフィルターは、7番目の列(pid / process name)を取り出し、さらに「/」で分割してpidを取得します。それをkillコマンドに渡します。


2
kill -9に対してはお勧めします。クリーンアップは許可されません。また、一部のインターネットアプリには、クリーンにシャットダウンする必要があるリソースがある可能性が高くなります。
リッチホモルカ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.