lsof コマンドの使い方:使用中のポートとプロセスを調べる

スポンサーリンク

lsof コマンドの使い方:使用中のポートとプロセスを調べる

lsof(List Open Files)は、プロセスが開いているファイルやネットワーク接続を一覧表示するコマンドです。「このポートを使っているプロセスはどれか」を調べるときに特に役立ちます。

macOS・Linux どちらでも標準で使えます。


ポートを使用しているプロセスを調べる

開発中に「Address already in use」エラーが出たときに使います。

# ポート 3000 を使っているプロセスを調べる
lsof -i :3000
COMMAND   PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
node     1234   user   23u  IPv6  0x...      0t0  TCP *:3000 (LISTEN)

PID 列の番号がプロセス ID です。そのまま kill に渡せます。

# プロセスを終了する
kill -9 1234

複数ポートをまとめて確認することもできます。

lsof -i :3000 -i :8080

TCP / UDP の一覧を表示する

# TCP 接続の一覧
lsof -i tcp

# UDP の一覧
lsof -i udp

# LISTEN 中のポートだけ表示
lsof -i tcp -s TCP:LISTEN

特定プロセスが開いているファイルを調べる

# PID 1234 のプロセスが開いているファイル一覧
lsof -p 1234

特定ファイルを開いているプロセスを調べる

ファイルが「使用中で削除できない」ときに、どのプロセスが掴んでいるか確認できます。

lsof /var/log/app.log
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
tail    5678 user    3r   REG  ...         0 1234 /var/log/app.log

ユーザーが開いているファイルを調べる

# 特定ユーザーのファイル一覧
lsof -u username

よく使うオプションまとめ

コマンド 説明
lsof -i :3000 ポート 3000 を使用中のプロセス
lsof -i tcp -s TCP:LISTEN LISTEN 中の TCP ポート一覧
lsof -i tcp TCP 接続の一覧
lsof -i udp UDP の一覧
lsof -p 1234 PID 1234 が開いているファイル
lsof /path/to/file 指定ファイルを開いているプロセス
lsof -u username ユーザーが開いているファイル

プロセス管理には ps コマンドも組み合わせて使うと便利です。lsof で PID を特定し、ps aux | grep 1234 で詳細を確認するのがよくある流れです。