ポートの競合を一発解消(Mac,Linux)

プログラミング

PCのライトユーザーならポートの存在など知らなくても一生問題ない。
(そもそもポートって何?という人はこちら)
ただ一度エンジニアの扉を叩くとこのポートの概念はしばしば登場する。
特に問題となる局面はポートの競合ではないだろうか?

使いたいサービス同士で同じポートを使おうとしていて後から使いたい方が使えないというものだ。

基本こういった場合、先にそのポートを使っているサービスを停止したり、または後から使うサービスのポートを変更して行うことになる。

ただ、ときにそもそも誰がそのポートを使っているかわからなかったり、サービスの不具合によってそのポートを専有し続けてしまう場合がある。

今回はそういった時に一発解消する手順を紹介する。

手順

まずはシェル(黒い画面)に移動し
まずは誰がそのポート(今回は8080)を使っているのかを調べる

$ lsof -i -P | grep 8080

lsof(list open files)は現在開いているファイルの一覧するコマンド。
これに
-i:ネットワークソケットを対象にする
-P:ポート名の換わりにポート番号を表示する
のオプションを使ってポートを使っているプロセスをすべて探し、
その結果の中から8080ポートを使っているプロセスを表示させるコマンドだ。

エクリプスあるあるなのだが、今回エクリプスから起動したサーバーが落としたにも関わらず動きっぱなしになってしまっている。こいつを強制的に停止させよう。

$ kill -9 30962

killは殺すという意味の英単語、起動しているプロセスを終了する際に使う
-9:デフォルトよりも強制的に終了させる
そしてプロセスid(今回は30962)を指定すれば完了だ。

コマンドも簡単で一瞬でサービスをキルすることができた。

コメント

タイトルとURLをコピーしました