投稿履歴
- 【Excel】シートが見えない!表示されない原因と対処法
- 【Linux】lsofコマンドの見方・活用ガイド
- 【A5M2】テーブルにNULL値を入力する方法
- 【Linux】標準出力と標準エラー出力の違い
- DRAMとSRAMの違い・覚え方を徹底解説!
- 【サクラエディタ】スペースとタブを置換する方法
- 【Excel】VBAの起動方法(開発タブが表示されない場合)
- 今日から使える!Gitコミットメッセージの書き方と型
- 【Excel】区切り指定でCSVを貼り付ける方法
- 【Linux】テキストファイルの重複行を削除する方法
- 【サクラエディタ】重複行を削除する方法
- Excelのプルダウンリストをショートカットで操作・管理する
- 【サクラエディタ】タブ表示の設定と使いこなしガイド
- 【サクラエディタ】矩形選択(ボックス選択)を完全ガイド
- 【サクラエディタ】Grep機能の使い方を初心者にもわかりやすく解説!
- TCPとUDPの違いと覚え方:信頼性 vs スピードを徹底解説
- Pythonの仮想環境を終了(deactivate)する方法
- 【Linux】zipファイルの圧縮方法(zipコマンド)
- LinuxでZIPファイルを解凍する方法【unzipコマンド】
- 暗号化アルゴリズムの種類:代表的なアルゴリズムを紹介!
Linux環境で「どのプロセスがどのファイルを開いているか」を確認するための実用的なツールのひとつが lsof(List Open Files) です。ネットワークポートの使用状況確認、削除済みファイルの調査、特定プロセスのファイルハンドル解析など、トラブルシューティングや運用保守に欠かせない存在です。
本記事では、lsofの見方・基本操作・応用テクニックを体系的に解説します。初心者にもわかりやすい例と、現場で使える応用Tipsを交えて紹介します。
記事のポイント
lsofは「開いているファイル」を一覧表示するLinuxの基本コマンド。- ファイル・プロセス・ポート・ソケットの状態を一括確認できる。
-i(ネットワーク)、-u(ユーザー)、-c(コマンド名)などのオプションが重要。- 出力の
TYPEとNAMEを理解するとトラブル原因の特定が容易。- 削除済みファイルの検出や使用中ポートの確認にも活用可能。
- システムの見える化とトラブル解決の両面で非常に有効。
lsofは開いているファイルを一覧表示するコマンド
lsofは、「システム上で現在開いているすべてのファイル」を一覧表示するLinux環境で広く使用されるユーティリティです。Linuxでは 「すべてはファイル」 という哲学のもと、通常のファイルだけでなく、ディレクトリ・デバイス・ネットワークソケット・パイプなど、あらゆるリソースがファイルとして扱われます。そのため、lsofを使うことで、ファイル・プロセス・ネットワーク通信の関連性を一目で把握できます。
lsofでファイル・プロセス・ネットワーク情報を確認
| 種類 | 説明 |
|---|---|
| ファイル情報 | 開かれているファイルのパス、アクセスモード、サイズなど |
| プロセス情報 | PID、実行ユーザー、コマンド名、権限など |
| ネットワーク情報 | TCP/UDPポート、LISTEN/ESTABLISHED 状態、通信相手など |
これにより、「どのプロセスがどのポートを使っているか」「どのファイルが削除済みだがプロセスが保持しているか」などを簡単に特定できます。
lsofの実行権限について
lsofはシステム全体のプロセス情報を取得できるコマンドのため、 すべてのプロセスを参照するには管理者権限(sudo) が必要です。一般ユーザー権限で実行した場合は、 自分が所有するプロセスのみ表示 されます。例えば、sudo lsofとすることで、全システムの開いているファイルやポートを確認できます。
lsofの基本構文と主要なオプション
lsofの基本構文
lsof [オプション] [条件]lsofでよく使われるオプション一覧
| オプション | 内容 | 使用例 |
|---|---|---|
-i | ネットワーク接続を特定 | lsof -i:80(ポート80使用確認) |
-c | コマンド名でフィルタ | lsof -c sshd(sshd関連プロセス) |
-u | 指定ユーザーのプロセスを表示 | lsof -u www-data |
-P | ポート番号を数値表示 | 名前解決を防止し高速化 |
-n | IPアドレスを数値表示 | DNS解決を抑制して速度向上 |
-a | AND条件で絞り込み | lsof -a -u root -iTCP |
+L1 | リンク数1未満、つまり削除済みのオープンファイルを選択する | lsof +L1 |
lsofの出力情報の見方
lsofを単体で実行すると、以下のような出力が得られます。
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEnginx 1234 root 3u IPv4 12345 0t0 TCP *:80 (LISTEN)各フィールドの意味は下記の通りです。
| フィールド | 説明 |
|---|---|
| COMMAND | 実行中のプログラム名 |
| PID | プロセスID(識別番号) |
| USER | 実行ユーザー名 |
| FD | ファイルディスクリプタ番号とモード(例:3u は読み書きモード) |
| TYPE | ファイル種別(REG, DIR, IPv4など) |
| DEVICE | デバイス番号またはファイルシステム識別子 |
| SIZE/OFF | ファイルサイズまたはオフセット |
| NODE | i-node番号(ファイルの内部識別子) |
| NAME | ファイルパスまたはネットワーク情報 |
TYPEフィールドの詳細
| TYPE | 意味 | 用途例 |
|---|---|---|
| REG | 通常ファイル | /var/log/syslogなど |
| DIR | ディレクトリ | /etcなど |
| CHR/BLK | キャラクタ・ブロックデバイス | /dev/null, /dev/sdaなど |
| IPv4 / IPv6 | ネットワークソケット | 通信ポートを使用する場合 |
| PIPE | プロセス間通信 | シェルパイプなど |
| DEL | 削除済みファイル | プロセスが保持中の一時ファイル |
NAME列の末尾に (LISTEN) が付いている場合は、そのポートが待ち受け状態であることを示します。(ESTABLISHED) は通信が確立中であることを意味します。
削除済みファイルの検出方法については+L1オプションまたはNAME列のdeletedからも確認できます。
現場で使える!lsofの活用例
lsofでネットワーク関連の確認~特定ポートの使用プロセスを特定~
lsof -i:443→ HTTPSポートを使用中のプロセスを確認。
lsofでネットワーク関連の確認~複数ポートを一括チェック~
lsof -i:22 -i:80 -i:443 -i:8080→ Web・SSH系サービスの状態をまとめて確認可能。
lsofでネットワーク関連の確認~TCP/UDP別に確認~
lsof -iTCPlsof -iUDP→ プロトコル別に整理された接続一覧を取得できます。
lsofでネットワーク関連の確認~特定IPアドレス宛の通信を確認~
lsof -i@192.168.1.100→ 指定IPと通信しているプロセスを抽出。
lsofでネットワーク関連の確認~LISTEN状態のみを抽出~
lsof -i -sTCP:LISTEN→ サーバーが現在待ち受けているポートのみを一覧表示。
lsofでファイル・プロセスの確認~特定ファイルを開いているプロセスを確認~
lsof /var/log/messages→ ログファイルを保持しているプロセスを特定し、削除不能トラブルを解決可能。
lsofでファイル・プロセスの確認~プロセス名からファイルを検索~
lsof -c nginx→ nginx関連のすべてのファイルハンドルを一覧化。
lsofでファイル・プロセスの確認~特定ユーザーの利用ファイルを確認~
lsof -u www-data→ Webアプリがどのファイルにアクセスしているか把握できます。
lsofでファイル・プロセスの確認~複合条件(AND条件)の利用~
lsof -a -u root -i:22→ 「rootユーザー」かつ「SSHポート22を使用している」プロセスのみ表示。
実務ヒント: WebサーバやDBサーバで複数条件を組み合わせると、特定ユーザー・特定通信に限定してトラブルを再現しやすくなります。
まとめ:lsofを使いこなすために
lsofは「開いているファイル」を一覧化するLinuxの基幹コマンド。-i,-u,-c,-a,-nPなどを組み合わせて効率的な調査が可能。- 出力フィールドを正しく理解すれば、ネットワーク・ファイルシステム・プロセスの全容が把握できる。
- 削除済みファイルやメモリリーク、ポート競合などのトラブルを可視化できる。
lsofは「システムの聴診器」。サーバの状態を可視化し、原因追及やリソース監視を効率化するために、日常的に活用していきましょう。
Linuxユーザにお勧めの本
ITエンジニアにお勧めの本
以上で本記事の解説を終わります。
よいITライフを!