1. ホーム
  2. bash

[解決済み] ポートに基づくプロセスを見つけ、それらをすべて殺すにはどうすればよいですか?[重複している]。

2023-06-11 08:10:33

質問

<余談
この質問には、すでにここで回答があります :
クローズド 3年前 .

ポート番号からプロセスを検索し、すべて強制終了します。

ps -efl | grep PORT_NUMBER | kill -9 process_found_previously

最後の列をどのように完成させるか?

どのように解決するには?

の問題は ps -efl | grep PORT_NUMBERPORT_NUMBER の出力で他のカラムにマッチする可能性があることです。 ps の出力にマッチすることもあります (日付、時刻、pid、...)。ルートで実行された場合、潜在的な殺人事件となる可能性があります。

私なら、代わりにこうします。

PORT_NUMBER=1234
lsof -i tcp:${PORT_NUMBER} | awk 'NR!=1 {print $2}' | xargs kill 

コマンドの内訳

  • ( lsof -i tcp:${PORT_NUMBER} ) -- その TCP ポートでリッスンしているすべてのプロセスをリストアップします。
  • ( awk 'NR!=1 {print $2}' ) -- 1行目は無視し、各行の2列目を表示する。
  • ( xargs kill ) -- 結果を引数として kill . いくつかあるかもしれません。