おひとり

できる限りひとりで楽しむための情報やプログラミング情報など。

【Mac】特定のポートを使っているプロセスを終了させるコマンド

たくさんの開発環境を起動していると、いつしかポートが被って起動できない時があります。
ここではターミナルを使って特定のポートを利用しているプロセスを停止させます。

TL;DR

  • 3001番ポートをつかってるプロセスを停止させる場合。
  • 確認プロンプトが出るのが嫌ならxargs-pを消して。
  • 複数killする場合は工夫して。
lsof -i :3001  | tail -n 1 | awk '{print $2}' | xargs -p kill -9

ちょっと解説

さっきの3001番ポートをつかってるプロセスを終了させる場合の解説。 (再掲)

lsof -i :3001  | tail -n 1 | awk '{print $2}' | xargs -p kill -9

lsof -i :3001

3001番ポートを使っているプロセスを出力する。 例えばこんな感じの出力が。(長いとこマスクしてます。)

COMMAND   PID           USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node    71759 ****   22u  IPv6 ***      0t0  TCP *:redwood-broker (LISTEN)

このうち、ほしい情報は2行2列目のPID
パイプをつかってこれらの情報を取りに行きます。

tail -n 1

最後の1行目だけ出力。

awk '{print $2}'

2列目のデータ(すなわちPIDだけ)だけ抽出。

xargs -p kill -9

先ほどのawkコマンドの出力をXとすると、

kill -9 X

というコマンドに変換する。 -pがついているので、実行時に確認のプロンプトがでる。いやなら-p消して。

まとめ

取り急ぎ開発環境の中で閉じ忘れたプロセスを終了させることができました。

f:id:hitoridehitode:20200510141710j:plain