lsof

lsof(エルエスオーエフ)コマンドは"list open files"の意味であり、多くのUnix系オペレーティングシステムで、オープン中のファイルやそのファイルをオープンしているプロセスのリストを出力するコマンドである。このオープンソースのユーティリティは、パデュー大学コンピューティングセンターの元アソシエートディレクター、ビクター・A・アベルによって開発・サポートされた。lsofはいくつかのUnix系OSで動作し、サポートされている。[3]

lsof
開発元Victor A. Abell [1]
最新版
4.94 / 2020年11月11日 (3年前) (2020-11-11) [2]
リポジトリ ウィキデータを編集
プログラミング
言語
C
サポート状況開発中
ライセンスBSDライセンス互換
公式サイトpeople.freebsd.org/~abe/
テンプレートを表示

オープン中のファイルには、すべてのプロセスがオープンしているディスク上のファイル、名前付きパイプ、ネットワークソケット、デバイスが含まれる。使用例の1つとしては、(特定できない何らかの)ファイルが使用中のであるために、ディスクがアンマウントできない時である。オープン中のファイルの一覧を確認することで(必要に応じてフィルタをかけることで)ファイルを使用しているプロセスを特定することができる。

# lsof /varCOMMAND     PID     USER   FD   TYPE DEVICE SIZE/OFF   NODE NAMEsyslogd     350     root    5w  VREG  222,5        0 440818 /var/adm/messagessyslogd     350     root    6w  VREG  222,5   339098   6248 /var/log/syslogcron        353     root  cwd   VDIR  222,5      512 254550 /var -- atjobs

特定のデーモンに関連づけられているポートを確認するには、次のようにする。

# lsof -i -n -P | grep sendmailsendmail  31649    root    4u  IPv4 521738       TCP *:25 (LISTEN)

上のコマンドの実行結果より、「sendmail」が標準ポート "25" 版をlistenしていることが確認できる。

-i
IPソケットをリストする。
-n
ホスト名の解決を行わない。(つまり、DNSを使用しない)
-P
ポート名の解決を行わない。(つまり、ポート名の代わりにポート番号をリストする)

他には、lsof -Uを使用すれば、Unixソケットを一覧することもできる。

lsofの出力

lsofの出力は以下の内容を表している。

  • そのファイルをオープンしているプロセスのID(PID)
  • そのプロセスのグループID(PGID)(オプション)
  • 親プロセスのプロセスID(PPID)(オプション)
  • プロセスが実行しているコマンド
  • プロセスのオーナー
  • プロセスが使用している、実行中のテキストファイルおよび共有ライブラリを含む、すべてのファイルのそれぞれに対して以下の項目を表示する
    • 可能なら、そのファイルのファイル記述子の数
    • ファイルのアクセスモード
    • ファイルのロック状態
    • ファイルのデバイス数
    • ファイルのinode数
    • ファイルのサイズまたはオフセット
    • ファイルが格納されているファイルシステムの名前
    • ファイルのパス名の利用可能なすべてのコンポーネント
    • ファイルのストリームコンポーネントの名前
    • ファイルのローカルおよびリモートのネットワークアドレス
    • ファイルのTLIネットワーク(主にUDP)の状態
    • ファイルのTCPの状態、読み込みキューの長さ、および、書き込みキューの長さ
    • ファイルのTCPウィンドウの読み込みおよび書き込みの長さ(Solarisのみ)
    • その他のファイルまたはファイルタイプ固有の値

関連項目

脚注

外部リンク