たくさんの開発環境を起動していると、いつしかポートが被って起動できない時があります。
ここではターミナルを使って特定のポートを利用しているプロセスを停止させます。
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
消して。
まとめ
取り急ぎ開発環境の中で閉じ忘れたプロセスを終了させることができました。