lsofコマンドって聞いてすぐに出てきますか?
インフラエンジニアの方であれば、すぐに出てくる人も多いと思います。
しかし、インフラでの経験が少ない方であれば、以下のようになる方も多いと思います。
- lsofコマンドって何?聞いたこともない。
- lsコマンドと何が違うの?
今回はそんなlsofコマンドについて、lsコマンドとの違いについても交えながら解説していきます。
lsofコマンドとは?
lsofは「List Open Files」の略称で、LinuxやUnix系システムで利用されるコマンドです。名前の通り、「プロセスが開いているファイル」を表示させるコマンドとなります。
システム上で開かれているファイルやネットワーク接続など、プロセスが利用しているリソースのリストを列挙するために使用されます。対象となるリソースはファイル、ディレクトリ、デバイス、プロセスなど幅広いものが含まれています。
lsofコマンドの基本的な使い方
lsofコマンドの基本構文は以下のようになります。
lsof [options] [path]
オプションを付与しない場合は全てのプロセスについて表示します。
例えば、指定されたパスのファイルを使用しているプロセスを表示させる場合、次のように実行します。
lsof /#該当ファイルパス/
オプション
lsofコマンドには多くのオプションがあります。以下のオプションはよく使用すると思われるオプションです。
オプション | 意味 |
---|---|
-p | 指定したプロセスIDに関連するファイルを表示する。 |
-i | 指定したポート番号やポート範囲を利用しているプロセスを表示する。 |
-c | 指定したプロセス名(文字列)に関連するファイルを表示する。 |
-n | ホスト名の代わりにIPアドレスを表示する。 |
-u | 指定したユーザーが所有するファイルを表示する。 |
-t | PID(プロセスID)のみを表示する。 |
-b | カーネルロックやデバイスの操作を抑制します。 |
lsコマンドとの違い
冒頭部分でも少し触れましたlsコマンドとの違いについて説明します。
lsコマンドとlsofコマンドは、両方ともファイルシステムを対象としています。
しかし、それぞれ異なる目的で使用するので覚えておきましょう!
lsコマンド
ファイルやディレクトリのリストを表示するために使用されます。
しかし、該当のディレクトリ内のファイルやディレクトリを表示するためのもので、そのファイルが開かれているかどうか、またどのプロセスによって開かれているかについてはlsコマンドでは分かりません。
lsofコマンド
ファイルがどのプロセスによって使用されているかを特定するために使用されます。
特定のファイルやリソースに関連するプロセスやプロセスIDを特定することができます。
例えば、削除したのにまだプロセスによって利用されているファイルなどを見つけることが可能になります!
実用の例について
lsofコマンドの実用例についていくつか紹介します。
ファイルの削除とプロセスの確認
ポートの使用状況確認
セキュリティとlsofについて
まとめ
今回は、lsofコマンドについてlsコマンドとの違いについて、交えながら解説しました。
ファイルやディレクトリの単純な一覧が知りたい場合は lsコマンド
ファイルがどのプロセスによって使用されているかを知りたい場合は lsofコマンド
ざっくりですが、今日初めてlsコマンドとの違いについて、知ったという方は上記のように覚えておきましょう!