LoginSignup
23
15

More than 3 years have passed since last update.

コマンド1発で特定のポートのプロセスをkillする

Posted at

Address already in use

ローカルでサーバー開発している際
Caused by: java.net.BindException: Address already in use
など、プロセスが残ったままで起動に失敗することがままある。
とりあえずkillする際、順当にやるのであれば

起動中のポートを調べる

コマンド

lsof -i:8080

結果

COMMAND  PID   USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
java    5229 growsic  231u  IPv6 0x37f621378bd0a299      0t0  TCP *:http-alt (LISTEN)

でPIDをコピーし

プロセスをkill

kill -9 5229

のように行う。
ただ、特定のポートをkillしたいだけなのにめんどくさい。

解決策

コマンドの方針としては

  • lsofでポートの数字のみを抜き出す
  • 抜き出したポートを引数にkillする

のように行う。

lsofでポートの数字のみを抜き出す

コマンド

lsof -t -i:8080

-tオプションをつけることで、ポートの数字のみを取得できる

結果

5229

抜き出したポートを引数にkillする

コマンド

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

lsof -t -i:8080を先に評価し、得られた数字を引数にkillコマンドが実行される。

結論

コマンド

kill -9 $(lsof -t -i:{ポート番号})
23
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
15