Linuxコマンドlsof使い方と3つのオプション

Linuxコマンドlsofは、システムの状態を監視したり、デバッグを行う際に、ファイルとプロセス間の関係を確認するために使用します。この記事では、lsofコマンドが何か、どのような状況で使用するのか、そしてよく使用されるオプションと注意点について説明します。

Linuxコマンドlsofとは?

lsofは「list open files」の略で、現在開いているファイルを一覧表示するコマンドです。Linuxでは、すべてがファイルとして扱われます。つまり、ディレクトリ、ネットワーク接続、デバイスなどもファイルと見なされるため、lsofは単にファイルだけでなく、システムで使用中のさまざまなリソースを確認できます。

特に、以下のような状況で便利です:

  • 特定のプロセスがどのファイルを開いているか確認したいとき
  • ファイルがどのプロセスによって使用されているのか不明なとき
  • ネットワークポートに関連するプロセスを確認したいとき
  • 削除されたファイルがまだ使用中であるプロセスを見つけたいとき

これらの機能により、システムの監視およびデバッグツールとして広く使用されています。

基本的な使い方

lsofコマンドの基本的な形式は非常にシンプルです。ターミナルで次のように入力します。

lsof
ShellScript

このコマンドは、現在開いているすべてのファイルに関連する情報を出力します。ただし、一般的なシステムでは非常に多くのファイルが開かれているため、通常は特定の条件を追加して必要な情報のみをフィルタリングするのが効率的です。

よく使用するオプション

特定プロセスの開いているファイルを確認する(-pオプション)

特定のプロセスID(PID)によって開かれているファイルを確認するには、-pオプションを使用します。たとえば、PIDが1234のプロセスの開いているファイルを確認したい場合は、次のように入力します。

lsof -p 1234
ShellScript

このコマンドは、そのプロセスが開いているすべてのファイルを出力します。以下の図は、bashが実行中のPID3152を対象に-pオプションを適用した結果です。

図1. Linuxコマンドlsof: -pオプションを適用してPID3152が開いているすべてのファイルを出力
図1. Linuxコマンドlsof: -pオプションを適用してPID3152が開いているすべてのファイルを出力

特定のファイルを開いているプロセスを探す

特定のファイルを開いているプロセスを知りたい場合は、ファイルパスを直接指定します。たとえば、/var/log/syslogファイルを開いているプロセスを探すには、次のように入力します。

lsof /var/log/syslog
ShellScript

このコマンドは、そのファイルを使用中のすべてのプロセスを表示します。

図2. Linuxコマンドlsof: 特定ファイルを開いているプロセスを探す
図2. Linuxコマンドlsof: 特定ファイルを開いているプロセスを探す

特定ポートを使用しているプロセスを確認する(-iオプション)

ネットワーク関連の問題を解決する際に、特定のポートを開いているプロセスを探すことが重要です。たとえば、80番ポートを開いているプロセスを探すには、次のように入力します。

lsof -i :80
ShellScript

このコマンドは、そのポートを使用しているプロセスに関する情報を出力します。ネットワークのデバッグやセキュリティチェックの際に非常に便利なオプションです。

図3. Linuxコマンドlsof: 特定ポートを使用しているプロセスを確認
図3. Linuxコマンドlsof: 特定ポートを使用しているプロセスを確認

削除されたファイルを探す

Linuxでは、ファイルが削除されても、そのファイルを開いているプロセスが存在する限り、ファイルは完全には削除されません。lsofを使用して削除されたファイルを確認するには、次のコマンドを使用します。

lsof | grep deleted
ShellScript

このコマンドは、システムで削除されたが、まだ使用中のファイルを表示します。この場合、ディスクスペースが解放されない可能性があるため、注意が必要です。

ユーザー別に開いているファイルを確認する(-uオプション)

特定のユーザーが開いているファイルのみを確認したい場合は、-uオプションを使用できます。たとえば、ユーザー’ito’が開いているファイルを確認するには、次のように入力します。

lsof -u ito
ShellScript

このコマンドは、そのユーザーが開いているすべてのファイルを一覧表示します。

図4. Linuxコマンドlsof: 特定ユーザー別に開いているファイルを確認
図4. Linuxコマンドlsof: 特定ユーザー別に開いているファイルを確認

便利な使い方

lsofコマンドは、システムの監視やネットワークのデバッグだけでなく、ファイルシステムのトラブルシューティングにも非常に役立ちます。たとえば、ファイルシステムがアンマウントできなかったり、特定のファイルが削除されない問題を解決する際にも使用できます。

さらに、lsofを定期的に使用してシステムの状態を監視することで、予期しない問題を事前に発見できることがあります。ネットワークポートを定期的に確認したり、削除されたファイルが適切に解放されているかをチェックするのもその例です。

注意点

権限の問題

lsofコマンドはシステムファイルやプロセスを確認するため、特定のファイルやプロセスにアクセスするには管理者権限が必要な場合があります。必要に応じて、sudoを付けて使用する必要があります。

sudo lsof
ShellScript

大量の出力

システムで開いているファイルが多い場合、lsofの出力は非常に多くなることがあります。そのため、出力結果をフィルタリングしたり、grepのようなツールを併用して、必要な情報だけを表示するのが良いでしょう。

図5. Linuxコマンドlsofをgrepコマンドと組み合わせてフィルタリング
図5. Linuxコマンドlsofをgrepコマンドと組み合わせてフィルタリング

まとめ

lsofは、Linuxでシステムリソースやプロセスを監視・デバッグする際に非常に便利なコマンドです。現在開いているファイルを確認したり、ネットワークポートを使用しているプロセスを探すなど、さまざまな状況で活用できます。基本的には開いているファイルを一覧表示しますが、さまざまなオプションを利用することで、必要な情報を効率的にフィルタリングできます。システム管理やネットワーク問題の解決において必須のコマンドであるため、定期的に使用し、慣れることで、より多くの問題を解決できるようになるでしょう。

今後、lsofを活用して、Linuxシステムをより深く理解し、問題が発生した際に迅速に対応できるようにしましょう。

リファレンス

関連ポスト

コメントする