lsofコマンドとは#
lsof(list open files)は、システムで開いている全てのファイルやプロセス、ネットワークソケット等を一覧表示するためのコマンド。
主なオプション#
| オプション | 説明 | 例 |
|---|---|---|
-i | ネットワーク接続を表示 | lsof -i |
-i :ポート番号 | 特定ポートを使用しているプロセス | lsof -i :80 |
-i tcp / -i udp | TCP/UDP接続のみ表示 | lsof -i tcp |
-p PID | 特定プロセスが開いているファイル | lsof -p 1234 |
-u ユーザー名 | 特定ユーザーのプロセス | lsof -u root |
-c コマンド名 | 特定コマンドのプロセス | lsof -c nginx |
+D ディレクトリ | ディレクトリ配下のファイル(再帰的) | lsof +D /var/log |
-t | PIDのみ出力(スクリプト向け) | lsof -t -i :8080 |
-P | ポート番号を数字で表示(サービス名ではなく) | lsof -i -P |
-n | ホスト名解決を行わない(高速化) | lsof -i -n |
よく使う組み合わせ#
# ポート8080を使用しているプロセスを確認
lsof -i :8080
# LISTENしているポート一覧
lsof -i -P -n | grep LISTEN
# 特定ファイルを開いているプロセス
lsof /var/log/syslog
# 削除されたが開かれたままのファイル
lsof +L1
# 特定プロセスのネットワーク接続
lsof -i -a -p 1234
出力の見方#
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1234 root 6u IPv4 12345 0t0 TCP *:80 (LISTEN)
- FD: ファイルディスクリプタ(
u=読み書き、r=読み取り、w=書き込み) - TYPE: ファイルタイプ(IPv4, IPv6, REG, DIRなど)
- NODE: inode番号またはプロトコル
振り返りポイント#
- lsofコマンドとは
lsof -i :8080はどんなコマンド?lsof -i -P -n | grep LISTENはどんなコマンド?