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 で詳細を確認するのがよくある流れです。