【初心者向け】Macで使用中のポートを確認する方法|開発やトラブル対処に役立つ!

Mac

「ローカルサーバーが立ち上がらない」
「このポート使ってるの、誰?」

そんな時に役立つのが「Macで現在使用中のポートを確認する方法」です。

特にWeb開発やDockerなどを利用していると、ポートの競合が原因でアプリケーションが正常に動作しないことがあります。

この記事では、Macのターミナルで簡単に使用中ポートを調べる方法を初心者向けに丁寧に解説します。

スポンサーリンク

使い方は簡単!まずは基本コマンド:lsof

Macで使用中のポートを調べるには、まず以下のような lsof コマンドを使います。

lsof は「List Open Files」の略で、開いているファイルやネットワークポートを確認できるコマンドです。

sudo lsof -i :ポート番号

例:ポート3000が使われているか確認する場合

sudo lsof -i :3000

このコマンドを実行すると、そのポートを使っているプロセスの情報が一覧表示されます。

表示例とその見方

COMMAND   PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
node    12345 myuser  18u  IPv4 0x1234      0t0  TCP *:3000 (LISTEN)

この例では:

  • COMMAND: node プロセスがポートを使用中
  • PID: プロセスID(この例では12345)
  • USER: 実行ユーザー名
  • NAME: ポート番号と状態(LISTENは待ち受け中を意味)

もし何も表示されなければ、該当ポートは現在使われていません。

全ポートの使用状況を一覧表示する

特定のポートではなく、すべての使用中ポートを確認したい場合は、以下のようにします。

sudo lsof -i -P

オプションの説明

  • -i: インターネット接続に関する情報を表示
  • -P: ポート番号を名前に変換せずに表示(例:80ではなくhttpと表示しない)

このコマンドは、ネットワーク関連の全接続を表示し、使用中のポート番号やプロセス名も確認可能です。表示される情報の中で、LISTEN 状態になっているものが現在ポートを待ち受けているプロセスです。

見やすく表示するテクニック

接続が多すぎて見づらい場合は、grep LISTENを組み合わせると、待ち受け中のポートだけに絞れます:

sudo lsof -i -P | grep LISTEN

また、特定のプロトコル(TCPやUDP)だけを表示することも可能です:

sudo lsof -iTCP -P

プロセスを特定して停止したいとき

ポートを使っているプロセスID(PID)がわかれば、以下のようにして強制終了も可能です。

① プロセスID(PID)を確認:

sudo lsof -i :3000

例)出力の中に PID が 12345 のプロセスがあったとします。

② 該当プロセスを停止:

kill -9 12345

システムや他のサービスに影響がないか十分注意して行いましょう。
特に知らないプロセスを強制終了すると、予期せぬ問題を引き起こす可能性があります。

より安全な終了方法

kill -9 は強制終了のため、データが破損するリスクがあります。まずは通常の終了信号を送る方法を試しましょう:

kill 12345

それでも終了しない場合に -9 オプションを使います。

netstat や ss はMacでは非推奨?

Linuxでよく使われる netstatss コマンドですが、Macでは非推奨または標準でインストールされていないことがあります。

そのため、Macでは lsofps, nettop などのコマンドが推奨されます。

代替方法:nettop コマンド

グラフィカルなネットワーク監視ツールとして、nettop も便利です:

nettop

これでインタラクティブなインターフェースでネットワーク接続が表示されます。q キーで終了できます。

応用:ポート80や443のようなシステムポートの使用状況を確認

sudo lsof -iTCP:80 -sTCP:LISTEN

このようにすれば、HTTP(80番)やHTTPS(443番)などの重要ポートが、他のアプリケーションに占有されていないか確認できます。

特定のアプリケーションがどのポートを使っているか確認

例えば、JavaやNode.jsプロセスが使用しているポートを確認したい場合:

sudo lsof -i -P | grep java
sudo lsof -i -P | grep node

特定の範囲のポートをチェック

例えば、8000番から9000番のポートを確認したい場合:

sudo lsof -i :8000-9000

よくあるポート競合と対処法

ケース1: 同じポートで起動しようとしてエラー

Error: listen EADDRINUSE: address already in use :::3000

このエラーは、ポート3000がすでに使用中であることを示しています。

lsof で確認し、必要に応じてプロセスを終了するか、別のポートを使用しましょう。

ケース2: Dockerのコンテナポートが競合

Dockerを使っている場合、コンテナのポートマッピングも競合の原因になります。

# Dockerコンテナが使用しているポートを確認
docker ps

ケース3: システムサービスが使用中

Macのシステムサービスがポートを使用していることもあります。例えば、AirPlayは7000番ポートを使います。

sudo lsof -i :7000

まとめ|Macのポート確認で開発・トラブル対応をスマートに

Macでポートを確認するのは、開発者にとっての基本中の基本スキルです。

特にトラブル時や複数のサービスを並行で使う場面では、ポートの競合を素早く見つけて解決することで、無駄な時間を減らせます。

ポイントまとめ

  • sudo lsof -i :ポート番号 で特定ポートの確認
  • sudo lsof -i -P | grep LISTEN で待ち受け中のポート一覧を確認
  • PIDを使ってプロセス停止も可能(慎重に)
  • Macでは netstat より lsof を活用
  • ポート競合は開発環境でよく起こるトラブルの一つ

ぜひ、ターミナルからポート状態をチェックする習慣をつけて、より快適なMac開発環境を手に入れてください!

コメント

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