lsof コマンド
はじめに こんにちは!今回はlsofコマンドについて解説します。 lsofは、開いているファイルを一覧表示するコマンドです。“list open files"の略ですね。ポート競合の調査やプロセスが何のファイルを使っているか確認する場合に便利。サーバー管理やトラブルシューティングの現場で毎日使われるコマンドです。 「どのプロセスがどのファイルを開いているか調べる機」って感じです。 lsofコマンドとは lsofは、Linuxシステムで開かれているすべてのファイル、ソケット、ディレクトリを一覧表示するコマンドです。 ファイルだけでなく、ネットワークソケット、パイプ、デバイスなど、Linuxの"ファイル"として扱われるすべてのものが対象。特定のプロセスが開いているファイル、特定のポートを使用しているプロセス、削除されたが開かれたままのファイルなど、様々な調査ができます。システムの状態を把握するのに欠かせないツールですね。 基本構文 1 lsof [オプション] [条件] オプションなしで実行すると、すべての開いているファイルが表示されます。 主なオプション オプション 説明 -p PID 指定したプロセスIDで開かれているファイル -u ユーザー 指定したユーザーで開かれているファイル -c コマンド 指定したコマンドで開かれているファイル -i ネットワークファイルのみ表示 -i :ポート番号 指定したポート番号を使用しているプロセス -d FD 指定したファイルディスクリプタ +D ディレクトリ 指定したディレクトリ配下のファイル -n ホスト名を表示しない(高速化) -a 複数条件のAND(デフォルトはOR) -t PIDのみ表示 使用例 例1: すべてのオープンファイルを表示 1 lsof | head -20 実行結果: 1 2 3 4 5 6 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 root cwd DIR 3,2 4096 2 / systemd 1 root rtd DIR 3,2 4096 2 / systemd 1 root txt REG 3,2 1234567 456789 /lib/systemd/systemd systemd 1 root mem REG 3,2 567890 123456 /lib/x86_64-linux-gnu/libc.so.6 (...省略...) 全プロセスのオープンファイルを表示。数が多いため通常は制限します。 ...