lsof - 開いているファイルのリストを表示

スポンサーリンク

lsofコマンドはシステム上の開いているファイルと、それらのファイルにアクセスしているプロセスを表示します。
ファイルには、通常のファイル、ディレクトリ、ネットワークソケット、デバイスファイルなどが含まれているため、ポートの利用状況の確認等にも利用でき、ファイルシステムのトラブルシューティングやセキュリティ監査に役立つツールになります。
lsofは、List Open Filesの略になります。

スポンサーリンク

開いているファイルをすべて表示(オプションなし)

システム上で開いているファイルをすべて表示できます。システム上で開いているファイルをすべて表示するととても多くのファイルが表示されるため、lsofコマンドは基本的にオプションを利用して表示する内容をフィルタリングして使うことになると思います。

コマンド例

実行結果

補足として、利用環境によりますが、lsofコマンドの出力の行数を確認してみると

約40000行程のレコードが表示されるのが確認できます。

特定のユーザーが開いているファイルを表示(-u <ユーザー名>)

-uオプションを用いると特定のユーザーが開いているファイルを表示できます。

コマンド例

実行結果

指定したプロセスが開いているファイルを表示(-p <プロセスID>)

-pオプションを用いると指定したプロセスが開いているファイルを表示できます。
例ではviエディタを指定しています。表示されているファイルはviで利用している共有ライブラリや設定ファイル、viコマンドで新規に開いたファイルを編集するために作成されたスワップファイル、エディタの編集状況を表示するために開かれた仮想端末のデバイスファイルなどが確認できます。

コマンド例

実行結果

指定したポートを使用しているネットワークソケットを表示(-i :<ポート番号>)

-iオプションを用いると指定したポートを使用しているネットワークソケットを表示できます。

-iオプションでの指定する文字列の書式は以下のようになっています。

指定したプロトコル(TCPやUDPなど)に関連するネットワークソケットを表示(-i <tcp, udp等>)

-iオプションは書式を変えることで、指定したプロトコルに関連するネットワークソケットを表示できます。

上記の例は、HTTPサーバーを以下のコマンドを実行して起動させています。

lsofの出力を編集

簡単なテキスト編集の紹介になります。AwkとRubyを利用して、AwkはGNU Awkになります。

・列の抽出(Awk, 1行目飛ばし)

コマンド例

実行結果

・列の抽出(Ruby, 1行目飛ばし)

コマンド例

実行結果

・横並び(Awk)

コマンド例

実行結果

・横並び(Ruby)

コマンド例

実行結果