コマンドラインのマニュアル

Man » lsof のオンラインマニュアル - lsof man ページの詳細なオンラインドキュメント

🌍
lsof - オープンファイルのリストを表示

概要

lsof [ -?abChHlnNOPQRtUvVX ] [ -A A ] [ -c c ] [ +c c ] [ +|-d d ] [ +|-D D ] [ +|-e s ] [ +|-E ]
[  +|-f  [cfgGn]  ]  [ -F [f] ] [ -g [s] ] [ -i [i] ] [ -k k ] [ -K k ] [ +|-L [l] ] [ +|-m m ] [
+|-M ] [ -o [o] ] [ -p s ] [ +|-r [t[m<fmt>]] ] [ -s [p:s] ] [ -S [t] ] [ -T [t] ] [  -u  s  ]  [
+|-w ] [ -x [fl] ] [ -z [z] ] [ -Z [Z] ] [ -- ] [names]

説明

Lsof リビジョン 4.99.4 は、次の UNIX 形式のプロセスによって開かれたファイルに関する情報を標準出力にリストします。

Apple Darwin 9、Mac OS X 10、macOS 11 以降
FreeBSD 8.2 以降
Linux 2.1.72 以降
NetBSD 1.2 以降
OpenBSD 7.2 以降
Solaris 9、10、および 11 以降
OpenIndiana 5.11 以降

(最新の lsof リビジョンを取得する方法については、このマニュアルページの「配布」セクションを参照してください。)

オープンファイルは、通常のファイル、ディレクトリ、ブロック特殊ファイル、文字特殊ファイル、実行中のテキスト参照、ライブラリ、ストリーム、またはネットワークファイル(インターネットソケット、NFSファイル、または UNIX ドメインソケット)にすることができます。特定のファイル、またはファイルシステム内のすべてのファイルは、パスで選択できます。

書式設定された表示の代わりに、lsof は他のプログラムによって解析できる出力を生成します。-F オプションの説明と、「他のプログラム用の出力」セクションを参照してください。

lsof は、単一の出力リストを生成することに加えて、繰り返しのモードで実行されます。繰り返しのモードでは、出力を生成し、遅延し、割り込みまたは終了シグナルで停止されるまで、出力操作を繰り返します。+|-r [t[m<fmt>]] オプションの説明を参照してください。

オプション

オプションが指定されていない場合、lsof はすべてのアクティブなプロセスに属するすべてのオープンファイルをリストします。

リスト要求オプションのいずれかが指定された場合、他のリスト要求は明示的に要求する必要があります。たとえば、-U が UNIX ソケットファイルのリ​​ストについて指定された場合、-N が指定されていない限り、NFS ファイルはリストされません。-u オプションでユーザーリストが指定された場合、リストにないユーザーに属する UNIX ドメインソケットファイルは、-U オプションも指定されていない限りリストされません。

通常、明示的に記述されたリストオプションは OR 演算されます。つまり、-i オプションと -ufoo オプションをアドレスなしで指定すると、すべてのネットワークファイルまたはプロセスがユーザー「foo」によって所有されるファイルがリストされます。例外は次のとおりです。

1 -u オプションで指定された、否定されたログイン名またはユーザー ID (UID)。
2 -p オプションで指定された、否定されたプロセス ID (PID)。
3 -g オプションで指定された、否定されたプロセスグループ ID (PGID)。

4 `^` (否定) コマンドは、`-c` オプションで指定されます。

5 `^` (否定) TCP または UDP プロトコル状態名は、`-s [p:s]` オプションで指定されます。

これらは除外を表すため、OR または AND を使用せずに適用され、他のすべての選択基準が適用される前に効果を発揮します。

`-a` オプションを使用して、選択を AND できます。たとえば、`-a`、`-U`、`-ufoo` を指定すると、UNIX ソケットファイルのうち、ユーザー `foo` が所有するプロセスに属するファイルのみがリストされます。

注意:`-a` オプションは、すべてのリスト選択オプションを AND するため、`-a` を配置しても、選択されたオプションのペアを AND する効果はありません。`-a` が配置された場所に関わらず、すべての選択オプションが AND されます。

同じ選択セット (コマンド名、ファイル記述子、ネットワークアドレス、プロセス識別子、ユーザー識別子、ゾーン名、セキュリティコンテキスト) の項目は、単一の OR されたセットにまとめられ、その結果が AND に参加する前に適用されます。したがって、たとえば、-l-l-a、および -ufff,ggg を指定すると、ログイン fff または ggg のいずれかに属し、かつ、ホスト aaa.bbb または ccc.ddd のいずれかにネットワーク接続を持つファイルのリストが選択されます。

オプションは、単一のプレフィックスの後にグループ化できます。たとえば、オプションセット '-a -b -C' は、-abC として記述できます。ただし、-f-F-g-i-L-o-r-s-S-T-x、および -z の後に値がオプションで続くため、これらのオプションに値がない場合は注意が必要です。たとえば、-Fn は、-F-n の両方のオプションを表す場合と、-F オプションに続くフィールド識別子文字 n を表す場合があります。あいまいさがある場合は、新しいオプションを '-' 文字で開始します。たとえば、'-F -n' とします。次のオプションがファイル名の場合は、おそらくあいまいなオプションの後に -- を追加します。たとえば、'-F -- name' とします。

^ +' または '-' のいずれかのプレフィックスを、オプションのグループに適用できます。個別のプレフィックスで異なる意味を持つオプション (たとえば、-i) 以外のオプションは、どちらかのプレフィックスの下にグループ化できます。したがって、たとえば、'+M -i' は、'+Mi' として記述でき、グループは個別のオプションと同じ意味を持ちます。1 つ以上のオプションが、異なるプレフィックスの下で個別の意味を持つ場合 (たとえば、+|-M) は、プレフィックスのグループ化に注意してください。'-iM' は、'-i +M' と同じリクエストではありません。疑わしい場合は、適切なプレフィックスを持つ個別のオプションを使用してください。

`-? -h` これらの2つの等価なオプションは、使用法(ヘルプ)出力リストを選択します。lsof は、提供されたオプションにエラーがあることを検出し、各エラーを説明するメッセージを表示した後、この出力の短縮形式を表示します。 (シェルで必要なように、`?` 文字をエスケープしてください。)

`-a` は、リスト選択オプションを AND するようにします。上記を参照してください。

`-A A` は、動的モジュールを介して実装された AFS カーネルコードで構成された AFS システムで使用できます。これにより、lsof ユーザーは、カーネルが動的モジュールのアドレスを検索できる代替名前リストファイル `A` を指定できます。lsof の FAQ (FAQ セクションにその場所が記載されています) には、動的モジュール、そのシンボル、およびそれらが lsof に与える影響に関する詳細が記載されています。

-b       lsofに、ブロックする可能性のあるカーネル関数(`lstat(2)`、`[readlink]({filename}../../readlink)(2)`、および`[stat]({filename}../../stat)(2)`など)の使用を回避させます。

BLOKKU TO TAIMUAUTOおよびカーネルブロックの回避に関するセクションを参照して、このオプションの使用方法を確認してください。

-c c     コマンドの実行中に開いているファイルのリストを選択し、コマンド名が文字cで始まるようにします。複数のコマンドを指定するには、複数の`-c`オプションを使用できます。これらは、ANDオプションの選択に参加する前に、単一のOR結合されたセットとして結合されます。

cが`^`で始まる場合、それに続く文字は、除外するコマンド名になります。

cがスラッシュ('/')で始まり、スラッシュ('/')で終わる場合、スラッシュ間の文字は正規表現として解釈されます。正規表現内のシェルメタ文字は、シェルによって解釈されないように引用符で囲む必要があります。閉じスラッシュの後に、次の修飾子を続けることができます。

b    正規表現は基本的なものになります。
i    文字の大文字と小文字を区別しません。
x    正規表現は拡張されたものになります(デフォルト)。

lsofのFAQ(FAQセクションでその場所が示されています)で、基本的な正規表現と拡張された正規表現の詳細を確認してください。

単純なコマンド指定は最初にテストされます。そのテストが失敗した場合、コマンドの正規表現が適用されます。単純なコマンドテストが成功した場合、コマンドの正規表現テストは実行されません。これにより、lsofの`-V`オプションが指定されたときに、「regexに対するコマンドが見つかりません」というメッセージが表示される場合があります。

+c w     UNIXダイアレクトによって提供される、プロセスに関連付けられたUNIXコマンドの名前の先頭の最大文字数を定義し、COMMAND列に出力します(lsofのデフォルトは9です)。

多くのUNIXダイアレクトは、lsofがコマンド名を取得するファイルおよび構造において、すべてのコマンド名文字をlsofに提供していません。多くの場合、ダイアレクトは、これらのソースで提供される文字の数を制限します。たとえば、Linux 2.4.27とSolaris 9はどちらも、コマンド名の長さを16文字に制限しています。

wがゼロ('0')の場合、UNIXダイアレクトによってlsofに提供されるすべてのコマンド文字が出力されます。

wが列タイトルの長さである``COMMAND``よりも小さい場合、wは列タイトルの長さにまで増加します。

-C       カーネルの名前キャッシュからパス名コンポーネントのレポートを無効にします。詳細については、カーネルの名前キャッシュのセクションを参照してください。

+d s     ディレクトリsとその中に含まれるファイルとディレクトリのすべての開いているインスタンスを検索します。+dは、sをルートとするディレクトリツリーを再帰的に検索しません。

+D Dオプションを使用して、ディレクトリDをルートとする完全な再帰的なディレクトリツリー検索を要求できます。

^ d オプションの処理では、s 内のシンボリックリンクは、-x または -x l オプションも指定されていない限り、辿りません。また、-x または -x f オプションも指定されていない限り、s のサブディレクトリにあるファイルシステムのマウントポイント上のオープンファイルを検索することもありません。

注意:このオプションを使用するユーザーの権限は、システム [stat]({filename}../../stat)(2) 関数で検査できるファイルのみを検索するように制限されます。

^ d s は、出力リストから除外または含めるファイル記述子 (FD) のリストを指定します。ファイル記述子は、カンマで区切られたセット s で指定されます。例:cwd,1,3^6,^2。(セット内にスペースを入れてはいけません。)

リストは、すべてのエントリが ^ で始まる場合、除外リストになります。エントリが ^ で始まらない場合、それは包含リストになります。混合リストは許可されていません。

セット内のファイル記述子番号の範囲は、どちらのメンバーも空でなく、両方のメンバーが数値であり、終了メンバーが開始メンバーより大きい場合、許可されます。例:0-7 または 3-10。範囲は、^ プレフィックスが付いている場合は、除外のために指定できます。例:^0-7 は、ファイル記述子 0 から 7 までのすべてのファイル記述子を除外します。

複数のファイル記述子番号は、AND オプション選択に参加する前に、単一の OR されたセットに結合されます。

セットに除外と包含のメンバーが含まれている場合、lsof はエラーとして報告し、ゼロ以外のリターンコードで終了します。

ファイル記述子 (FD) 出力値の説明については、OUTPUT セクションを参照してください。

^ d は、可能なすべてのファイル記述子番号の範囲を指定するための疑似ファイル記述子名です。fd は、出力の FD 列には表示されません。

^ D D は、ディレクトリ D とその中に含まれるすべてのファイルおよびディレクトリのインスタンスを、その完全な深さまで検索するように lsof に指示します。

^ D オプションの処理では、-x または -x l オプションも指定されていない限り、D 内のシンボリックリンクは辿りません。また、-x または -x f オプションも指定されていない限り、D のサブディレクトリにあるファイルシステムのマウントポイント上のオープンファイルを検索することもありません。

注意:このオプションを使用するユーザーの権限は、システム [stat]({filename}../../stat)(2) 関数で検査できるファイルのみを検索するように制限されます。

さらに注意:lsof は、このオプションを処理するのに時間がかかり、大量の動的メモリが必要になる場合があります。これは、lsof がディレクトリツリー全体を辿り、D をルートとして、各ファイルとディレクトリに対して [stat]({filename}../../stat)(2) を呼び出し、見つけたすべてのファイルのリストを構築し、そのリストとすべてのオープンファイルとの一致を検索する必要があるためです。ディレクトリ D が大きい場合、これらのステップには時間がかかるため、このオプションは慎重に使用してください。

^ D D は、lsof がデバイスキャッシュファイルを使用するように指示します。このオプションの使用は、場合によっては制限されます。DEVICE CACHE FILE セクションとそれに続くセクションを参照して、このオプションの詳細を確認してください。


-D の後には、関数文字が続く必要があります。関数文字の後に、オプションでパス名が続くことがあります。lsof は、次の関数文字を認識します。

? - デバイスキャッシュファイルのパスをレポートする
b - デバイスキャッシュファイルを構築する
i - デバイスキャッシュファイルを無視する
r - デバイスキャッシュファイルを読み取る
u - デバイスキャッシュファイルを読み取り、更新する

b、r、および u 関数は、パス名とともに使用される場合、制限されることがあります。これらの関数が制限されている場合、-h または -? オプションの出力に表示される -D オプションの説明には、それらは表示されません。DEVICE CACHE FILE セクションとそれに続くセクションを参照して、これらの関数と、それらが制限される状況の詳細を確認してください。

? 関数は、lsof がデバイスキャッシュファイルに使用できる読み取り専用および書き込みパス、lsof がデバイスキャッシュファイルのパスを形成する際に参照する環境変数の名前、およびパーソナルデバイスキャッシュファイルのパスの形式をレポートします。(?' 文字を、シェルで必要に応じてエスケープしてください。)

利用可能な場合、b、r、および u 関数は、デバイスキャッシュファイルのデフォルトまたは指定されたパスに続くことができます。標準のデフォルトは、lsof を実行する実際のユーザー ID のホームディレクトリにある .lsof_hostname ですが、これは lsof が構成およびコンパイルされたときに変更されている可能性があります。(-h および -? オプションの出力には、現在のデフォルトのプレフィックスが表示されます (例: .lsof)。) サフィックスの hostname は、gethostname(2) によって返されるホスト名の最初のコンポーネントです。

利用可能な場合、b 関数は、lsof に対して、デフォルトまたは指定されたパスに新しいデバイスキャッシュファイルを構築するように指示します。

i 関数は、lsof に対して、デフォルトのデバイスキャッシュファイルを無視し、カーネルへの直接の呼び出しを介してデバイスに関する情報を取得するように指示します。

r 関数は、lsof に対して、デフォルトまたは指定されたパスにあるデバイスキャッシュファイルを読み取るように指示しますが、新しいデバイスキャッシュファイルが存在しない場合や、既存のファイルが正しく構造化されていない場合には、新しいデバイスキャッシュファイルを構築することはできません。r 関数がパス名なしで指定された場合、lsof は、不正確または古いデバイスキャッシュファイルを更新したり、その代わりに新しいファイルを構築したりすることを防ぎます。r 関数は、パス名引数なしで指定された場合、常に利用できます。ただし、lsof プロセスの権限によって制限される場合があります。

利用可能な場合、u 関数は、lsof に対して、デフォルトまたは指定されたパスにあるデバイスキャッシュファイルを読み取り、可能な場合は再構築するように指示します。これは、-D オプションが指定されていない場合のデフォルトのデバイスキャッシュファイル関数です。

+|-e s   ファイルシステム s を、ブロックされる可能性のあるカーネル関数呼び出しの対象から除外します。+e オプションは、[stat]({filename}../../stat)(2)、lstat(2)、およびほとんどの [readlink]({filename}../../readlink)(2) カーネル関数呼び出しを除外します。-e オプションは、[stat]({filename}../../stat)(2) および lstat(2) カーネル関数呼び出しのみを除外します。複数のファイルシステムは、別々の +|-e 仕様で指定でき、それぞれで [readlink]({filename}../../readlink)(2) 呼び出しを除外するかどうかを指定できます。

このオプションは現在、Linuxでのみ実装されています。

注意:このオプションは、ファイルシステムではなく、他のものに誤って適用される可能性があるため、注意して使用してください。パス名を使用するため、より信頼性の高いデバイス番号とinode番号を使用する方法ではありません。

(デバイス番号とinode番号は、stat(2)カーネルコールを介して取得されます。このカーネルコールはブロックされる可能性があり、そのためこれらの情報は利用できませんが、+|-m mオプションを使用してデバイス番号を指定することもできます。)このオプションを使用する際は、対象のファイルシステムのパス名を完全に指定してください。

例外として指定されたファイルシステム上の開いているファイルが報告された場合、すべての情報を取得できない場合があります。したがって、一部の情報列は空白になり、「UNKN」という文字がTYPE列の値の先頭に付加され、適用される例外オプションがNAME列の末尾に括弧で追加されます。(一部のデバイス番号情報は、+|-m mオプションを使用して利用できる場合があります。)

+|-E     +Eは、Linuxパイプ、Linux UNIXソケット、ローカルホストで閉じられたLinux INET(6)ソケット、Linux擬似端末ファイル、LinuxのPOSIXメッセージキュー実装、およびLinux eventfdが、エンドポイント情報とともに表示され、エンドポイントのファイルも表示されるように指定します。

注1:UNIXソケットファイルのENDPOINT情報は、-v出力の「features enabled」行に「uxsockept」が含まれている場合にのみ利用でき、擬似端末ENDPOINT情報は、「ptyept」が含まれている場合にのみ利用できます。

注2:POSIXメッセージキューファイルのENDPOINT情報は、mqueueファイルシステムがマウントされている場合にのみ利用できます。

パイプENDPOINT情報は、NAME列に「PID,cmd,FDmode」の形式で表示されます。PIDはENDPOINTプロセスID、cmdはENDPOINTプロセスのコマンド、FDはENDPOINTファイルのディスクリプタ、modeはENDPOINTファイルのアクセスモードです。

擬似端末ENDPOINT情報は、NAME列に「->/dev/ptsmin PID,cmd,FDmode」または「PID,cmd,FDmode」の形式で表示されます。最初の形式はマスターデバイス用、2番目の形式はスレーブデバイス用です。minはスレーブデバイスのマイナーデバイス番号であり、PID、cmd、FD、modeはパイプENDPOINT情報と同じです。注:擬似端末ENDPOINT情報は、-v出力の「features enabled」行に「ptyept」が含まれている場合にのみ利用できます。さらに、この機能は、4.13.0以降のLinuxカーネルで動作します。

UNIXソケットファイルのENDPOINT情報は、NAME列に「type=TYPE ->INO=INODE PID,cmd,FDmode」の形式で表示されます。TYPEはソケットタイプ、INODEは接続されたソケットのinode番号であり、PID、cmd、FD、modeはパイプENDPOINT情報と同じです。注:UNIXソケットファイルのENDPOINT情報は、-v出力の「features enabled」行に「uxsockept」が含まれている場合にのみ利用できます。


INET ソケットファイルのエンドポイント情報は、NAME 列の値に次の形式で挿入されます。
``  ->  PID,cmd,FDmode''。PID、cmd、FD、mode は、パイプエンドポイント情報の場合と同じです。
エンドポイント情報は、ソケットがローカル IPC に使用されている場合にのみ利用できます。両方のエンドポイントが、同じローカル IPv4 または IPv6 アドレスにバインドされます。

POSIX メッセージキューファイルのエンドポイント情報は、NAME 列にパイプの場合と同じ形式で表示されます。

eventfd エンドポイント情報は、NAME 列にパイプの場合と同じ形式で表示されます。この機能は、Linux カーネル 5.2.0 以降で動作します。

ファイルの名前列には、この情報が複数回表示されることがあります。

-E は、サポートされているエンドポイントファイルをエンドポイント情報とともに表示しますが、エンドポイントファイル自体は表示しません。

+|-f [cfgGn]
f は、パス名引数の解釈方法を明確にします。c、f、g、G、または n のいずれかの組み合わせで続く場合、カーネルファイル構造情報のリストを有効にする (`+`) か、禁止する (`-`) ことを指定します。

通常、パス名引数は、[mount]({filename}../../mount)(8) で報告されたマウントポイントのディレクトリ名と一致するか、マウント出力に表示され、マウントされたディレクトリに関連付けられているブロックデバイスを表す場合に、ファイルシステム名と見なされます。+f が指定された場合、すべてのパス名引数はファイルシステム名と見なされ、それらの引数がファイルシステム名でない場合は、lsof はエラーメッセージを表示します。これは、ファイルシステム名(マウントされたデバイス)がブロックデバイスでない場合に役立ちます。これは、一部の CD-ROM ファイルシステムで発生します。

-f がそれ自体で指定された場合、すべてのパス名引数は単純なファイルと見なされます。したがって、たとえば、`-- /` 引数は、`/'` (ルート) ファイルシステム内のすべての開いているファイルではなく、`/'` パス名を持つ開いているファイルを検索するように lsof に指示します。

+f と -f が正しく終了し、ファイルまたはファイルシステム名の文字がそれに続くことによって、パラメータとして解釈されないように注意してください。たとえば、+f と -f の後に `--` を使用します。

$ lsof +f -- /file/system/name
$ lsof -f -- /file/name

+f [cfgGn] オプション形式で要求されたカーネルファイル構造からの情報のリストは、通常は禁止されており、一部のプラットフォームでは、または一部のプラットフォームでは、完全または部分的に利用できません(たとえば、2.6.22 より前の /proc ベースの Linux カーネル)。f のプレフィックスがプラス記号 (`+`) の場合、これらの文字はファイル構造情報を要求します。

c    ファイル構造の使用回数(Linux ではない)
f    ファイル構造のアドレス(Linux ではない)
g    ファイルフラグの省略形(Linux 2.6.22 以降)

略語。   C コード内のフラグ(open(2) を参照)

W         O_WRONLY
RW        O_RDWR
CR        O_CREAT
EXCL      O_EXCL
NTTY      O_NOCTTY
TR        O_TRUNC
AP        O_APPEND
ND        O_NDELAY
SYN       O_SYNC
ASYN      O_ASYNC
DIR       O_DIRECT
DTY       O_DIRECTORY
NFLK      O_NOFOLLOW
NATM      O_NOATIME
DSYN      O_DSYNC
RSYN      O_RSYNC
LG        O_LARGEFILE
CX        O_CLOEXEC
TMPF      O_TMPFILE

G   Linux 2.6.22以降のファイルフラグを16進数で表示
n   ファイル構造ノードのアドレス(Linux以外)

接頭辞にマイナス(-)が付いている場合、同じ文字はその値のリスト表示を無効にします。

ファイル構造のアドレス、使用回数、フラグ、およびノードアドレスを使用して、子プロセスによって継承された同一のファイルや、異なるプロセスによって使用されている同一のファイルをより容易に検出できます。lsofの列出力を、出力列に値が含まれるようにソートして、同一のファイルの使用状況を特定したり、lsofのフィールド出力をAWKまたはPerlのポストフィルタースクリプト、またはCプログラムで解析したりできます。

-F f    別のプログラムで処理するために出力するフィールドを選択する文字のリストfを指定し、各出力フィールドの終端文字も指定します。出力する各フィールドは、f内の単一の文字で指定します。フィールド終端文字はデフォルトではNLですが、NUL(000)に変更できます。出力に関する詳細については、別のプログラム用の出力セクションを参照してください。

フィールド選択文字のリストが空の場合、すべての標準フィールドが選択されます(互換性のために、生のデバイスフィールド、セキュリティコンテキストフィールド、およびゾーンフィールドは除きます)。また、フィールド終端文字はNLになります。

フィールド選択文字のリストにゼロ(0)のみが含まれている場合、すべてのフィールドが選択されます(互換性のために、生のデバイスフィールドは除きます)。また、フィールド終端文字はNULになります。

他のフィールドとそれに関連するフィールド終端文字の組み合わせは、fで明示的に指定する必要があります。これは、別のプログラム用の出力セクションで説明されているとおりです。

フィールド選択文字が、lsofが通常リスト表示しない項目(たとえば、PPID、-Rオプションで選択)を指定する場合、-Fオプションとフィールド文字(例:-FR)を指定することで、その項目のリスト表示も有効になります。

フィールド選択文字のリストに単一の文字?が含まれている場合、lsofはフィールド識別文字のヘルプリストを表示します。?文字をシェルでエスケープする必要がある場合があります。

-g [s]  オプションのプロセスグループID(PGID)番号が、カンマ区切りのセットs(例:`123`または`123,^456`)に含まれているプロセスのファイルのリストを表示するか、表示しないようにします。(セット内にスペースを入れてはいけません。)

^ ``で始まるPGID番号は、除外を表します。

複数のPGID番号は、OR演算された単一のセットに結合され、ANDオプション選択に参加します。ただし、PGID除外はOR演算やAND演算なしで適用され、他の選択基準が適用される前に効果を発揮します。

^ gオプションは、PGID番号の出力表示も有効にします。PGIDセットを指定せずに指定した場合、それだけを実行します。

-H  lsofに、読みやすい形式(例:123.4K、456.7M)でサイズを表示するように指示します。

-i [i]  iで指定されたアドレスに一致するインターネットアドレスを持つファイルのリストを選択します。アドレスが指定されていない場合、このオプションはすべてのインターネットファイルと25(HP-UX)ネットワークファイルをリスト表示します。

^ i4 または -i6 を、それに続くアドレスなしで指定した場合、指定された IP バージョン (IPv4 または IPv6) のファイルのみが表示されます。 (IPv6 の指定は、lsof-h または -? 出力に [46] および IPv[46] が表示されている場合にのみ、UNIX の方言が IPv6 をサポートする場合にのみ使用できます。) -i4 の後に -i6 を連続して指定することは、-i を指定することと同じです。また、その逆も同様です。 -i の後に -i4 または -i6 を指定することは、-i4 または -i6 を単独で指定することと同じです。

複数のアドレス (最大 100 個まで) は、複数の -i オプションを使用して指定できます。 (ポート番号またはサービス名の範囲は、1 つのアドレスとしてカウントされます。) これらは、AND オプション選択に参加する前に、単一の OR 集合として結合されます。

インターネットアドレスは、次の形式で指定されます (角かっこ内の項目はオプションです)。

[46][プロトコル][@ホスト名|ホストアドレス][:サービス|ポート]

ここで:
46 は、続くアドレスに適用される IP バージョン (IPv4 または IPv6) を指定します。
UNIX の方言が IPv6 をサポートしている場合にのみ、`6` を指定できます。 `4` も `6` も指定されていない場合、続くアドレスはすべての IP バージョンに適用されます。
プロトコル は、プロトコル名 (TCP、UDP、または UDPLITE) です。
ホスト名 は、インターネットホスト名です。 特定の IP バージョンが指定されていない限り、すべてのバージョンのオープンネットワークファイルに関連付けられたホスト名が選択されます。
ホストアドレス は、ドット形式の数値インターネット IPv4 アドレス、または UNIX の方言が IPv6 をサポートしている場合に、コロン形式の数値 IPv6 アドレスであり、角かっこで囲まれています。 IP バージョンが選択された場合、その数値アドレスのみを指定できます。
サービス は、`/etc/services` の名前 (例: smtp) またはそれらのリストです。
ポート は、ポート番号またはそれらのリストです。

IPv6 オプションは、UNIX の方言が IPv6 をサポートしている場合にのみ使用できます。 方言が IPv6 をサポートしているかどうかを確認するには、lsof を実行して、-h または -? (ヘルプ) オプションを指定します。 -i オプションの説明に [46] および IPv[46] が含まれている場合、IPv6 がサポートされています。

ネットワークファイルの選択が -i 6 で IPv6 に制限されている場合、IPv4 のホスト名とアドレスを指定することはできません。 ネットワークファイルの選択が -i 4 で IPv4 に制限されている場合、IPv6 のホスト名とアドレスを指定することはできません。 オープン IPv4 ネットワークファイルの アドレスが IPv6 アドレスにマッピングされている場合、オープンファイルのタイプは IPv4 ではなく IPv6 になり、その表示は 6 によって選択されます。

少なくとも 1 つのアドレスコンポーネント (4、6、プロトコル、ホスト名、ホストアドレス、またはサービス) を指定する必要があります。 ホスト指定の先頭にある '@' 文字、およびポート指定の先頭にある ':' 文字は常に必要です。 ホスト名またはホストアドレスのいずれかを指定します。 サービス名のリストまたはポート番号のリストのいずれかを指定します。 サービス名のリストを指定する場合、TCP、UDP、および UDPLITE のサービス名のポート番号が異なる場合は、プロトコルも指定する必要がある場合があります。 プロトコルの大文字と小文字は区別しません。

-i6 - IPv6 のみ
TCP:25 - TCP およびポート 25
@1.2.3.4 - インターネット IPv4 ホストアドレス 1.2.3.4
@[3ffe:1ebc::1]:1234 - インターネット IPv6 ホストアドレス
3fe:1ebc::1, ポート 1234
UDP:who - UDP who サービスポート
_:513 - TCP, ポート 513 およびホスト名 lsof.itap
tcp@foo:1-10,smtp,99 - TCP, ポート 1 から 10, サービス名 smtp, ポート 99, ホスト名 foo
tcp@bar:1-smtp - TCP, ポート 1 から smtp, ホスト bar
:time - TCP、UDP、または UDPLITE のいずれかの time サービスポート

-K k は、スレッド(タスク)レポートがサポートされている場合に、プロセスのタスク(スレッド)のリストを選択します(ヘルプ出力(つまり、-h または -? オプションの出力)にこのオプションが表示されている場合、そのダイアレクトでタスク(スレッド)レポートがサポートされています)。

-K の後に値 k が続く場合、それは ``i`` でなければなりません。これにより、lsof はタスクを無視します。特に、他のオプションが指定されていないデフォルトの、すべてのものをリストするケースで役立ちます。

Linux で -K と -a の両方が指定され、他のオプションによってメインプロセスのタスクが選択された場合、メインプロセスもタスクとしてリストされますが、タスク ID はありません(出力セクションの TID 列の説明を参照)。

FreeBSD バージョンでスレッドがサポートされている場合、すべてのスレッドは ID と共にリストされます。

一般に、スレッドとタスクは呼び出し元のファイルを引き継ぎますが、一部を閉じ、他のファイルを開く場合があるため、lsof は常にスレッドとタスクの開いているすべてのファイルをレポートします。

-k k は、/vmunix、/mach などの代わりに、カーネル名リストファイル k を指定します。-k は AIX で IBM RISC/System 6000 上では使用できません。

-l は、ユーザー ID 番号をログイン名に変換する処理を抑制します。ログイン名の検索が正しく機能していない場合や、速度が遅い場合にも役立ちます。

+|-L [l] は、ファイルリンクカウントのリスト表示を有効化(`+`)または無効化(`-`)します。ファイルリンクカウントは、ソケットやほとんどの FIFO およびパイプでは使用できません。

+L が数値なしで指定された場合、すべてのリンクカウントがリストされます。-L が指定された場合(デフォルト)、リンクカウントはリストされません。

+L の後に数値が続く場合、リンクカウントがその数値よりも小さいファイルのみがリストされます(数値は -L の後に続けることはできません)。+L1 のような指定は、アンリンクされた開いているファイルを選択します。+aL1 <ファイル_システム> のような指定は、指定されたファイルシステム上のアンリンクされた開いているファイルを選択します。

他のリンクカウント比較については、フィールド出力(-F)と、後処理スクリプトまたはプログラムを使用します。

+|-m m は、代替のカーネルメモリファイルを指定するか、マウントテーブルの補足処理を有効にします。

オプション形式 -m m は、/dev/kmem または /dev/mem の代わりに、カーネルメモリファイル m を指定します。たとえば、クラッシュダンプファイルです。

オプション形式 +m は、標準出力ファイルにマウント補足ファイルを出力するように要求します。他のすべてのオプションは無視されます。

マウント補足ファイルには、マウントされたファイルシステムごとに 1 行ずつ、マウントされたファイルシステムのディレクトリ、その後に単一のスペース、その後に 16 進形式のデバイス番号 (「0x」形式) が含まれます。例:

/ 0x801

lsof は、stat(2) または lstat(2) を使用してファイルシステムのデバイス番号を取得できない場合に、マウント補足ファイルを使用してデバイス番号を取得できます。

オプション形式 +m m は、m をマウント補足ファイルとして指定します。

注: +m および +m m オプションは、すべてのサポートされている方言で利用できるわけではありません。lsof の -h または -? オプションの出力を確認して、+m および +m m オプションが利用可能かどうかを確認してください。

+|-M     ローカル TCP、UDP、および UDPLITE ポートのポートマッパー登録のレポートを有効 (+) または無効 (-) にします (ポートマッピングがサポートされている場合)。 (ポートマッパー登録レポートがサポートされている場所については、このオプションの説明の最後の段落を参照してください。)

デフォルトのレポートモードは、lsof のビルド時に、方言の machine.h ヘッダーファイル内の HASPMAPENABLED マクロを使用して設定されます。lsof は、HASPMAPENABLED マクロが非アクティブ化された状態で配布されるため、ポートマッパーレポートはデフォルトで無効になっており、+M を使用して要求する必要があります。lsof の -h または -? オプションを指定すると、デフォルトのモードが報告されます。ポートマッパー登録がすでに無効になっているときに無効にするか、すでに有効になっているときに有効にすることは問題ありません。ポートマッパー登録レポートが有効になっている場合、lsof は、ローカル TCP、UDP、または UDPLITE ポートのポートマッパー登録 (存在する場合) を、ポート番号またはサービス名の直後に角括弧で囲んで表示します。例: :1234[name]'' または:name[100083]''。登録情報は、登録プログラムがポートマッパーに登録した内容によって、名前または番号のいずれかになります。

ポートマッパー登録レポートが有効になっている場合、lsof の実行速度がわずかに遅くなるか、またはポートマッパーへのアクセスが混雑または停止した場合にブロックされる可能性があります。レポートモードを切り替えて、ポートマッパー登録レポートが lsof を遅くしているか、ブロックしているかどうかを確認してください。

ポートマッパー登録レポートの目的で、lsof は、TCP、UDP、または UDPLITE ポートがローカルであると見なします。これは、次のいずれかの条件を満たす場合です。 含まれているカーネル構造のローカル部分に存在する場合。 含まれているカーネル構造の外部部分に存在し、ローカルアドレスと外部アドレスが同じ場合。 含まれているカーネル構造の外部部分に存在し、外部アドレスが INADDR_LOOPBACK (127.0.0.1) の場合。 このルールにより、lsof は、複数のインターフェイスを持つマシンで、外部アドレスがローカルアドレスとは異なるインターフェイスにある外部ポートを無視する場合があります。


ポートマッパー登録の報告に関する問題については、lsof FAQ(FAQセクションにその場所が記載されています)を参照してください。

ポートマッパー登録の報告は、RPCヘッダーファイルがある場合にのみサポートされます。(GlibC 2.14を搭載した一部のLinuxディストリビューションには、これらがありません。)ポートマッパー登録の報告がサポートされている場合、-hまたは-?ヘルプ出力には、+|-Mオプションが表示されます。

-n  ネットワークファイルに対して、ネットワーク番号をホスト名に変換しないようにします。変換を抑制すると、lsofの実行が高速化される場合があります。また、ホスト名のルックアップが正常に機能していない場合にも役立ちます。

-N  NFSファイルのリスト表示を選択します。

-o  lsofに、常にファイルオフセットを表示するように指示します。これにより、SIZE/OFF出力の列タイトルがOFFSETに変更されます。注意:一部のUNIX方言では、lsofはカーネルのデータソースから正確または一貫したファイルオフセット情報を取得できない場合があります。これは、特定の種類のファイル(例:ソケットファイル)でのみ発生することがあります。詳細については、lsof FAQ(FAQセクションにその場所が記載されています)を参照してください。

-oと-sオプションは互いに排他的であり、両方を同時に指定することはできません。どちらも指定されていない場合、lsofはファイルの種類に応じて適切な値(サイズまたはオフセット)を表示します。

-o o    ファイルオフセットの後に表示する10進数の桁数(o)を指定し、その後に形式を「0x...」に変更します。oの値がゼロ(無制限)の場合、lsofは常に「0t」形式でオフセットを出力します。

このオプションは、lsofに常にオフセットを表示するように指示するものではありません。常にオフセットを表示するには、-o(末尾に数字なし)を指定します。-o oは、サイズとオフセットを混在して表示する場合、またはオフセットのみを表示する場合に、"0t"の後の桁数を指定するだけです。したがって、たとえば、常にオフセットを表示し、10進数の桁数を10に設定するには、次のように使用します。

-o -o 10
または
-oo10

「0t」の後に許可されるデフォルトの桁数は通常8ですが、lsofのビルド時に変更されている可能性があります。-o oオプションの説明を-hまたは-?オプションの出力で確認して、有効になっているデフォルト値を確認してください。

-O  lsofが、一部のカーネル操作によってブロックされないようにするために使用する戦略をバイパスするように指示します。つまり、それらをフォークされた子プロセスで実行します。詳細については、[BLOCKS AND TIMEOUTS]と[AVOIDING KERNEL BLOCKS]のセクションを参照してください。

このオプションを使用すると、lsofの起動オーバーヘッドが減少しますが、カーネルが関数に応答しない場合、lsofがハングする可能性もあります。このオプションは慎重に使用してください。

-p s    オプションのプロセスID(PID)番号がカンマで区切られたセットsに含まれているプロセスのファイルリストを除外または選択します。たとえば、「123」または「123,^456」などです。(セット内にスペースを入れてはいけません。)

`^`で始まるPID番号は、除外を表します。

複数のプロセスID番号は、ANDオプションの選択に参加する前に、単一のOR化されたセットにまとめられます。ただし、PIDの除外はORまたはANDを行わずに適用され、他の選択基準が適用される前に有効になります。

-P は、ネットワークファイルに対してポート番号をポート名に変換する処理を禁止します(通常、このマッピングは`/etc/services`から学習されます)。変換を禁止すると、`lsof`の実行速度がわずかに向上する可能性があります。また、ポート名ルックアップが正しく機能していない場合に役立ちます。

-Q は、検索に失敗した用語を無視します。`lsof`に、ファイル、デバイス、特定のPID、またはそのPIDによって使用されている特定のプロトコルを使用するユーザーを検索するように指示した場合、検索結果が空の場合、`lsof`はエラーを返します。`-Q`オプションを使用すると、この動作が変更され、`lsof`は代わりに成功した終了コード(0)を返し、検索結果が空であってもエラーを返さなくなります。さらに、存在しない検索用語は標準エラーに出力されなくなります。

+|-r [t[c<N>][m<fmt>]]
`lsof`をリピートモードにします。`lsof`は、他のオプションで選択されたオープンファイルを一覧表示し、`t`秒(デフォルトは15秒)待機してから、`-`で始まるオプションで指定された条件で停止されるまで、一覧表示と待機を繰り返します。

接頭辞が`\`-'\`の場合、リピートモードは無限に続きます。`lsof`は、割り込みまたはキルシグナルで終了する必要があります。`\`c<N>'\`は、繰り返しの制限を指定します。繰り返しの回数が`<N>`に達すると、`lsof`は自動的に停止します。

接頭辞が`\`+'\`の場合、リピートモードは、最初のサイクルでオープンファイルが一覧表示されなくなったとき、または`lsof`が割り込みまたはキルシグナルで停止されたときに終了します。リピートモードが、オープンファイルが一覧表示されなくなったために終了した場合、プロセス終了コードは、オープンファイルが一度でも一覧表示された場合はゼロになり、一度も一覧表示されなかった場合は1になります。

`lsof`は、各一覧表示の最後にマークを表示します。フィールド出力が進行中(`-F`オプションが指定されている)の場合、デフォルトのマークは`m`です。それ以外の場合、デフォルトのマークは``========''です。マークの後に改行文字が続きます。

オプションの`"m<fmt>"`引数は、マーク行の形式を指定します。`\`m'\`の後の`<fmt>`文字は、`strftime(3)`関数への形式指定として解釈されます。このとき、Cライブラリで`strftime(3)`関数と`localtime(3)`関数が利用可能である必要があります。形式指定の詳細については、`strftime(3)`のドキュメントを参照してください。`-F`オプションでフィールド出力を要求する場合、`<fmt>`には改行形式`\`%n'\`を含めることはできません。また、`<fmt>`にスペースやその他のシェルが引数の解釈に影響を与える文字が含まれている場合は、`<fmt>`を適切に引用する必要があります。

リピートモードは、`lsof`の起動オーバーヘッドを削減するため、シェルスクリプトから`lsof`を繰り返し呼び出すよりも効率的です。

リピートモードを最も効率的に使用するには、他の`lsof`の選択オプションと組み合わせて、`lsof`がアクセスするカーネルメモリの量を最小限に抑えます。プロセスレベルでフィルタリングするオプション(例:`-c`、`-g`、`-p`、`-u`)は、最も効率的なセレクターです。

`-R` は、`lsof` に PPID 列に親プロセス ID 番号をリストするように指示します。

`-s [p:s]` `s` 単独で指定した場合、`lsof` は常にファイル サイズを表示します。これにより、SIZE/OFF 出力列のタイトルが SIZE に変更されます。ファイルにサイズがない場合、何も表示されません。

オプションの `-s p:s` 形式は、選択された方言でのみ利用可能で、`-h` または `-?` ヘルプ出力にリストされている場合にのみ利用可能です。

オプション形式が利用可能な場合、`s` の後にプロトコル名 (TCP または UDP)、コロン (`:`)、およびカンマ区切りのプロトコル状態名のリストが続きます。このオプションにより、開いている TCP および UDP ファイルが、リストにある状態名が `^` で始まる場合は除外され、そうでない場合は含まれます。

このオプションをサポートする方言は、1 つのプロトコルのみをサポートする場合があります。サポートされていないプロトコルが指定された場合、プロトコルの状態名が利用できないことを示すメッセージが表示されます。

包含リストが定義されている場合、リストにある状態名を持つネットワーク ファイルのみが `lsof` の出力に表示されます。したがって、単一の状態名を指定すると、その単一の状態名を持つネットワーク ファイルのみがリストされます。

プロトコルまたは状態名の大文字と小文字は区別されませんが、スペースは使用できず、プロトコル名 (p) と状態名リスト (s) を区切るコロン (`:`) が必要です。

TCP および UDP ファイルのみをリストする場合、指定された除外と包含によって制御されます。`-i` オプションも指定する必要があります。単一のプロトコルのファイルのみをリストする場合は、その名前を `-i` オプションの引数として追加します。

たとえば、TCP 状態 LISTEN を持つネットワーク ファイルのみをリストするには、次のように使用します。

    `-iTCP -sTCP:LISTEN`

または、UDP 状態のすべてを除いて Idle 状態を除外して、ネットワーク ファイルをリストするには、次のように使用します。

    `-iUDP -sUDP:^Idle`

状態名は UNIX の方言によって異なるため、完全なリストを提供することはできません。一般的な TCP 状態名には、CLOSED、IDLE、BOUND、LISTEN、ESTABLISHED、SYN_SENT、SYN_RCDV、ESTABLISHED、CLOSE_WAIT、FIN_WAIT1、CLOSING、LAST_ACK、FIN_WAIT_2、および TIME_WAIT があります。一般的な UDP 状態名には、Unbound と Idle があります。

プロトコル状態の除外と包含の使用方法の詳細と例については、`lsof` の FAQ (FAQ セクションで場所が示されます) を参照してください。

`-o` (数値に続く) オプションと `-s` オプション (プロトコル名と状態名リストに続く) は相互に排他的であり、両方を同時に指定することはできません。どちらも指定されていない場合、`lsof` はファイルの種類に応じて適切な値 (サイズまたはオフセット) を表示します。

一部のファイルの種類には真のサイズがないため (ソケット、FIFO、パイプなど)、`lsof` は可能な場合は、それらの関連するカーネル バッファー内のコンテンツの量をサイズとして表示します。

-S [t]   カーネル関数 - lstat(2)、[readlink]({filename}../../readlink)(2)、および [stat]({filename}../../stat)(2) - に対して、それらがデッドロックを引き起こす可能性がある場合に、オプションのタイムアウト秒数を指定します。最小値は 2 です。デフォルトは 15 です。値を指定しない場合は、デフォルトが使用されます。

BLOKS AND TIMEOUTS のセクションを参照して、詳細を確認してください。

-T [t]   ネットワークアドレスの後に、一部の TCP/TPI 情報のレポートを制御します。netstat({filename}../../netstat)(1) によってレポートされる情報も含まれます。通常の出力では、この情報は括弧で囲まれ、各項目はキーワードで識別され、`=` で区切られ、スペースで区切られます。

<TCP または TPI 状態名>
QR=<読み取りキューの長さ>
QS=<送信キューの長さ>
SO=<ソケットオプションとその値>
SS=<ソケット状態>
TF=<TCP フラグとその値>
WR=<読み取りウィンドウの長さ>
WW=<書き込みウィンドウの長さ>

すべての値は、すべての UNIX 形式でレポートされるわけではありません。利用可能な場合は、項目の名前と = の後に値がレポートされます。

フィールド出力モードが有効になっている場合 (「他のプログラムの出力」を参照)、各項目は T で始まるフィールドとして表示されます。

-T の後にキーワードが続かない場合、TCP/TPI 情報のレポートが無効になります。

-T の後に文字が続く場合、特定の TCP/TPI 情報のレポートが選択されます。

f    ソケットオプション、状態とその値、および TCP フラグとその値をレポートします。
q    キュー長のレポートを選択します。
s    接続状態のレポートを選択します。
w    ウィンドウサイズのレポートを選択します。

すべての選択肢がすべての UNIX 形式で有効になっているわけではありません。状態はすべての形式で選択でき、デフォルトでレポートされます。-h または -? ヘルプ出力は、-T オプションで使用できる選択肢を表示します。

-T を使用して情報を選択する場合 (つまり、1 つ以上の選択文字の後に続く場合)、デフォルトでは状態の表示が無効になり、-T の後に続く文字で明示的に再度選択する必要があります。 (この場合、デフォルトは -Ts と同等になります。) たとえば、キュー長と状態が必要な場合は、-Tqs を使用します。

ソケットオプション、ソケット状態、一部のソケット値、TCP フラグ、および 1 つの TCP 値は、(UNIX 形式で利用可能な場合) 通常、その形式のヘッダーファイル (<sys/socket.h>、<sys/socketvar.h>、<netinet/tcp_var.h>) に表示される名前 (SO_、so_、SS_、TCP_、TF_ の後に続く) の形式でレポートされます。これらのヘッダーファイルを参照して、フラグ、オプション、状態、および値の意味を確認してください。

``SO='' は、ソケットオプションとその値の前に表示されます。``SS='' は、ソケット状態の前に表示されます。``TF='' は、TCP フラグとその値の前に表示されます。

フラグまたはオプションに値がある場合、その値は = の後に名前が続きます。たとえば、SO=LINGER=5''、SO=QLIM=5''、``TF=MSS=512'' などです。次の 7 つの値がレポートされる場合があります。

名前 レポートされるもの 説明 (一般的なシンボル)


KEEPALIVE キープアライブ時間(SO_KEEPALIVE)
LINGER リングァ時間(SO_LINGER)
MSS 最大セグメントサイズ(TCP_MAXSEG)
PQLEN 接続待ちキューの長さ(部分)
QLEN 確立された接続待ちキューの長さ
QLIM 確立された接続待ちキューの制限
RCVBUF 受信バッファの長さ(SO_RCVBUF)
SNDBUF 送信バッファの長さ(SO_SNDBUF)

特定の UNIX バージョントで表示されるソケットオプションと値、ソケット状態、および TCP フラグと値の詳細については、lsof FAQ の「なぜ lsof は、ソケットオプション、ソケット状態、および TCP フラグと値を私のバージョントで表示しないのか?」および「なぜ lsof は、部分的な接続待ちキューの接続数を私のバージョントで表示しないのか?」という質問の回答を参照してください。(FAQ セクションにはその場所が記載されています。)Linux では、このオプションは UNIX ドメインソケットの状態も出力します。

-t 要約出力を生成します。これには、ヘッダーなしでプロセス識別子のみが含まれ、プログラムによる使用が容易になります。例:

# 古い SSL を使用しているものをすべて再起動します
lsof -t /lib/*/libssl.so.* | xargs -r kill -HUP

# プロセスのリストを取得し、それらを反復処理します(Bash のみ)
mapfile -t pids < <(
lsof -wt /var/log/your.log
)
for pid in "${pids[@]}" ; do
your_command -p "$pid"
done

-t オプションは、-w オプションを暗黙的に示します。

-u s ログイン名またはユーザー ID がカンマで区切られたセット s に含まれるユーザーのファイルリストを選択します。例:「abe」または「548,root」。(セット内にスペースを入れないでください。)

複数のログイン名またはユーザー ID は、他の AND オプションの選択に参加する前に、単一の OR セットとして結合されます。

ログイン名またはユーザー ID の前に ^ が付いている場合、それは否定になります。つまり、そのログイン名またはユーザー ID によって所有されるプロセスのファイルはリストに表示されません。否定されたログイン名またはユーザー ID の選択は、他の選択肢やコンパイル時のオプションとは AND 演算や OR 演算されず、最初に適用され、リストから対象のプロセスのファイルが完全に除外されます。たとえば、lsof に root プロセスのファイルをリストから除外するように指示するには、「-u^root」または「-u^0」を指定します。

-U UNIX ドメインソケットファイルをリストから選択します。

-v lsof のバージョン情報(リビジョン番号、lsof バイナリが構築された日時、バイナリを構築した人および場所、lsof バイナリを構築するために使用されたコンパイラの名前、利用可能な場合はコンパイラのバージョン番号、lsof バイナリを構築するために使用されたコンパイラおよびリンカのフラグ、およびシステム情報(通常は uname の -a オプションの出力))をリストから選択します。

-V lsof に、リストに含めるように要求されたが、見つからなかった項目(コマンド名、ファイル名、インターネットアドレスまたはファイル、ログイン名、NFS ファイル、PID、PGID、および UID)を表示するように指示します。

他のオプションが検索オプションに AND 演算で結合されている場合、またはコンパイル時のオプションが一部のファイルのリストを制限する場合、lsof は、AND 演算されたオプションまたはコンパイル時のオプションが、検索対象のファイルを含む開いているファイルのリストを制限しているため、検索項目が見つからなかったことを報告しない場合があります。


たとえば、lsof -V -iTCP@foobar -a -d 999 は、TCP@foobar で開いているファイルを見つけられなかった場合、またはファイル記述子番号が 99 のファイルが存在しない場合に、エラーを報告しないことがあります。また、HASSECURITY と HASNOSOCKSECURITY がコンパイル時に定義されている場合、開いているファイルのリスト表示が抑制されることがあります。

+|-w は、警告メッセージの抑制を有効にする (+) か無効にする (-) ことを示します。

^ sof のビルドツールは、デフォルトで警告メッセージを有効にするか無効にするかを決定できます。デフォルトの警告メッセージの状態は、-h または -? オプションの出力に示されます。警告メッセージがすでに無効になっているときに無効にするか、すでに有効になっているときに有効にすることは問題ありません。

^ t オプションは、-w オプションを暗黙的に示します。

^ x [fl] は、+d および +D オプションとともに使用して、ディレクトリ (+d) またはディレクトリツリー (+D) をスキャンするときに遭遇するシンボリックリンクおよび/またはファイルシステムのマウントポイントを横断するように処理を指示します。

^ x がパラメータなしで指定された場合、シンボリックリンクとファイルシステムのマウントポイントの両方を横断するように処理が有効になります。-x がパラメータなしで指定された場合、次の引数は - または + で始まる必要があります。

オプションの 'f' パラメータは、ファイルシステムのマウントポイントの横断処理を有効にし、'l' はシンボリックリンクの横断処理を有効にします。

^ x オプションは、+d または +D オプションと組み合わせて使用する必要があります。

^ X は、これは方言固有のオプションです。

AIX: この IBM AIX RISC/System 6000 オプションは、実行されたテキストファイルと共有ライブラリの参照を報告するように要求します。

警告: このオプションは readx() カーネル関数を使用するため、ビジーな AIX システムで使用すると、アプリケーションプロセスが完全にハングし、停止または強制終了できなくなる可能性があります。私はこれを実際に見たことも、そのような報告を受けたこともありませんが、そのような可能性は非常に低いと考えられます。

デフォルトでは、readx() の使用は無効になっています。AIX 5L 以降では、lsof-X オプションで要求された操作を実行するために、setuid-root 権限が必要になる場合があります。

^ sof のビルドツールは、-X オプションを実際の UID が root のプロセスに制限するように指定できます。そのように指定されている場合、-X オプションは、lsof プロセスの実際の UID が root でない限り、-h または -? ヘルプ出力に表示されません。デフォルトの lsof ディストリビューションでは、任意の UID が -X を指定できるため、デフォルトではヘルプ出力に表示されます。

AIX readx() の使用が無効になっている場合、lsof はすべてのテキストおよびローダーファイルの参照情報を報告できない場合がありますが、AIX カーネルのディレクトリ検索カーネルエラー (Stale Segment ID バグと呼ばれる) を悪化させる可能性も低くなります。

^ sof またはその他のプログラムがカーネルの仮想メモリのセクションにアクセスするために使用する readx() 関数は、Stale Segment ID バグを引き起こす可能性があります。これにより、カーネルの dir\_search() 関数が、ファイルシステムディレクトリのインメモリコピーの一部がゼロに設定されたと誤って判断するようになります。lsof とは別のアプリケーションプロセスが、open(2) を使用するなどして、カーネルにディレクトリの検索を要求すると、dir\_search() が無限ループに陥り、アプリケーションプロセスがハングする可能性があります。


lsofのFAQセクション(FAQセクションにその場所が記載されています)と、lsofディストリビューションの00READMEファイルを参照して、Stale Segment IDバグ、APAR、およびlsofをコンパイルする際にreadx()の使用を定義する方法について、より詳細な説明を確認してください。

Linux: このLinuxオプションは、lsofにすべての開いているTCP、UDP、およびUDPLITE IPv4およびIPv6ファイルの情報を報告しないように指示します。

このLinuxオプションは、システムに非常に多くの開いているTCP、UDP、およびUDPLITEファイルがあり、/proc/net/tcp*および/proc/net/udp*ファイル内のそれらの情報の処理にlsofがかなりの時間を要し、その情報の報告に関心がない場合に最も役立ちます。

このオプションは慎重に使用し、lsofに表示させたい情報が開いているTCP、UDP、またはUDPLITEソケットファイルに関連付けられていない場合にのみ使用してください。

Solaris 10以降: このSolaris 10以降のオプションは、削除されたファイル(つまり、rm(1)またはunlink(2)で削除されたファイル)のキャッシュされたパスの報告を要求します。

キャッシュされたパスの後に文字列``(削除済み)が付加され、ファイルが開かれたパスが削除されたことを示します。

パスに対して行われた一時的な変更(つまり、mv(1)またはrename(2)による名前の変更)はキャッシュされたパスに記録されないため、lsofが報告するのはファイルが開かれたパスのみであり、そのファイルの最終的なパス(変更されている場合)ではありません。

-z [z] は、Solaris 10以降のゾーン情報を処理する方法を指定します。

引数がない場合(例:NO z)、このオプションはゾーン名をZONE出力列にリストするように指定します。

-zオプションの後にゾーン名zが続きます。これにより、lsofは指定されたゾーン内のプロセスの開いているファイルのみをリストします。複数の-z zオプションと引数のペアを指定して、名前付きゾーンのリストを形成できます。指定されたゾーン内の任意のプロセスの開いているファイルは、他のオプションと引数によって指定された他の条件に従ってリストされます。

-Z [Z] は、SELinuxセキュリティコンテキストの処理方法を指定します。SELinuxが実行中のLinuxカーネルで無効になっている場合、このオプションと'Z'フィールド出力文字のサポートは無効になります。

OUTPUT FOR OTHER PROGRAMSに、'Z'フィールド出力文字に関する詳細情報が記載されています。

引数がない場合(例:NO Z)、このオプションはセキュリティコンテキストをSECURITY-CONTEXT出力列にリストするように指定します。

-Zオプションの後にワイルドカードセキュリティコンテキスト名Zが続きます。これにより、lsofは指定されたセキュリティコンテキスト内のプロセスの開いているファイルのみをリストします。複数の-Z Zオプションと引数のペアを指定して、セキュリティコンテキストのリストを形成できます。指定されたセキュリティコンテキスト内の任意のプロセスの開いているファイルは、他のオプションと引数によって指定された他の条件に従ってリストされます。Zは、A:B:C、*:B:C、A:B:*、*:*:Cを使用して、A:B:Cコンテキストと一致させることができます。

-- ダブルマイナス記号は、キー付きオプションの終わりを示すマーカーです。たとえば、最初のファイル名がマイナス記号で始まる場合に使用できます。また、最後のキー付きオプションの値が存在しないことを示すために、次のオプションの先頭にマイナス記号を配置してファイル名の開始を示す場合にも使用できます。

names これは、リストする特定のファイルのパス名です。シンボリックリンクは使用前に解決されます。最初の名前は、`--`オプションで区切ることができます。

名前がファイルシステムのマウントポイントのディレクトリまたはファイルシステムのデバイスである場合、lsofはファイルシステム上で開いているすべてのファイルをリストします。名前がファイルシステムと見なされるには、[mount]({filename}../../mount)(8)出力のいずれかのマウントポイントディレクトリ名と一致するか、マウントポイントディレクトリ名に関連付けられたブロックデバイスの名前と一致する必要があります。+|-fオプションを使用して、lsofに名前をファイルシステム識別子(+f)または単純なファイル(-f)として扱うように強制できます。

名前がファイルシステムのいずれかのマウントポイントディレクトリではないディレクトリへのパスである場合、それは通常のファイルと同様に扱われます。つまり、そのリストは、ファイルまたはプロセス固有のディレクトリ(ルートまたは現在の作業ディレクトリなど)として開いているプロセスに制限されます。lsofにディレクトリ名内の開いているファイルを検索させるには、+d sと+D Dオプションを使用します。

名前が、AIXの/dev/pt[cs]のような、一連の多重化されたファイルの基本名である場合、lsofはそのデバイス上で開いている関連するすべての多重化されたファイルをリストします。例:/dev/pt[cs]/1、/dev/pt[cs]/2など。

名前がUNIXドメインソケット名である場合、lsofは通常、名前の文字のみで検索します。これは、カーネルソケット構造に指定および記録されているとおりです。(Linuxの例外については、次の段落を参照してください。)相対パス(例:./file)を、ファイルの絶対パス(例:/tmp/file)の代わりに指定しても機能しません。これは、lsofが指定した文字をカーネルUNIXドメインソケット構造で見つけるものと照合する必要があるためです。

名前がLinuxのUNIXドメインソケット名である場合、lsofは場合によっては、そのデバイス番号とinode番号で検索できます。これにより、名前を相対パスとして指定できます。ただし、これには、絶対パス(つまり、スラッシュ(/)で始まるパス)が、ソケットを作成したプロセスによって使用され、/proc/net/unixファイルに保存されている必要があります。また、lsofが/proc/net/unix内の絶対パスと名前のデバイス番号とノード番号を[stat]({filename}../../stat)(2)システムコールを使用して正常に取得できる必要があります。これらの条件が満たされると、lsofは、名前でUNIXドメインソケットを検索できるようになります。たとえば、パスが/dev/logであり、作業ディレクトリが/devであるときにlsof検索を開始した場合、名前は./logにすることができます。

名前が上記のいずれでもない場合、lsof は、指定されたパス名のデバイスと inode に一致するすべての開いているファイルをリストします。

また、-b オプションを指定した場合、安全に指定できるのは、マウントテーブルに代替デバイス番号が提供されているファイルシステムのみです。詳細については、「カーネルブロックの回避」および「代替デバイス番号」のセクションを参照してください。

複数のファイル名は、AND オプションの選択に参加する前に、単一の OR されたセットに結合されます。

AFS

lsof は、これらの AFS ファイルと AFS バージョンを認識します。

AIX 4.1.4 (AFS 3.4a)
HP-UX 9.0.5 (AFS 3.4a)
Linux 1.2.13 (AFS 3.3)
Solaris 2.[56] (AFS 3.4a)

他のバージョンのこれらの AFS でも認識できる場合がありますが、テストは行われていません。AFS の実装方法によっては、lsof が他の AFS で AFS ファイルを認識したり、サポートされている AFS で AFS ファイルを認識するのが難しくなる場合があります。

lsof は、サポートされている AFS で、動的にロードされたモジュールのアドレスがカーネルの変数名リストに表示されない場合に、AFS ファイルのすべての側面を識別できない場合があります。この場合、lsof は AFS ファイルの識別を推測する必要があり、AFS ボリュームノード番号の計算に必要なカーネルからのボリューム情報を取得できない場合があります。lsof がボリュームノード番号を計算できない場合、NODE 列に空白が表示されます。

一部の AFS 実装の lsof では、-A オプションが利用可能です。このオプションを使用すると、動的にロードされたモジュールのカーネルアドレスが見つかる名前リストファイルを指定できます。このオプションが利用可能な場合は、lsof のヘルプ出力に表示されます (ヘルプ出力は、-h または -? オプションで表示されます)。

動的モジュール、それらのシンボル、および lsof オプションに与える影響の詳細については、lsof FAQ (FAQ セクションで場所が示されています) を参照してください。

AFS パス検索はカーネルの名前キャッシュ操作に参加しないため、lsof は AFS ファイルのパス名のコンポーネントを識別できません。

セキュリティ

lsof には、セキュリティ上の懸念を引き起こす可能性のある 3 つの機能があります。まず、デフォルトのコンパイルモードでは、誰でも lsof を使用してすべての開いているファイルをリストできます。次に、デフォルトでは、lsof を実行する実際のユーザー ID のホームディレクトリに、ユーザーが読み取りおよび書き込み可能なデバイスキャッシュファイルが作成されます。 (すべての開いているファイルのリストとデバイスキャッシュ機能は、lsof をコンパイルするときに無効にすることができます)。

すべての開いているファイルのリストを制限するのは、コンパイル時の HASSECURITY および HASNOSOCKSECURITY オプションです。HASSECURITY が定義されている場合、lsof では root ユーザーのみがすべての開いているファイルをリストできます。非 root ユーザーは、lsof プロセスと同じユーザー ID を持つプロセスの開いているファイルのみをリストできます (ユーザーがログインしたユーザー ID)。


ただし、HASSECURITYHASNOSOCKSECURITYの両方が定義されている場合、-iオプションで選択された開いているソケットファイルのみを、誰でもリスト表示できます。

^ ASSECURITYが定義されていない場合、誰でもすべての開いているファイルをリスト表示できます。

^ hまたは-?オプションに対するヘルプ出力では、HASSECURITYHASNOSOCKSECURITYの定義状態が表示されます。

^ sofHASSECURITYHASNOSOCKSECURITYオプションを有効にしてビルドする方法については、lsofディストリビューションの00READMEファイルの「セキュリティ」セクションを参照してください。

ユーザーが読み取りおよび書き込み可能なデバイスキャッシュファイルの作成と使用は、コンパイル時のHASDCACHEオプションによって制御されます。「デバイスキャッシュファイル」セクションおよびそれに続くセクションを参照して、そのパスがどのように形成されるかを確認してください。セキュリティ上の考慮事項として、デフォルトのlsofディストリビューションでは、lsofが実行される実際のユーザーIDがrootの場合、デバイスキャッシュファイルはrootのホームディレクトリ(例:/または/root)に書き込まれます。HASDCACHEが定義されていない場合、lsofはデバイスキャッシュファイルを書き込んだり、読み取ろうとしたりしません。

^ ASDCACHEが定義されている場合、-h-D?、または-?オプションに対するlsofヘルプ出力には、デバイスキャッシュファイルの処理に関する情報が表示されます。HASDCACHEが定義されていない場合、-hまたは-?出力には-Dオプションの説明は含まれません。

デバイスキャッシュファイル機能を無効にする前に(有効にすると、/dev(または/devices)内のすべてのノードを調べるための起動時のオーバーヘッドを削減することで、lsofのパフォーマンスが向上します)、lsofディストリビューションの00DCACHEファイルとlsof FAQ(FAQセクションにその場所が記載されています)にある議論を読んでください。

迷った場合は、-Diオプションを使用して、デバイスキャッシュファイルの使用を一時的に無効にすることができます。

^ sofユーザーが-kおよび-mオプションで代替カーネル名リストまたはメモリファイルを宣言する場合、lsofaccess(2)を使用して、それらを読み取るユーザーの権限を確認します。これは、lsofのモードが持つ可能性のある特殊な権限が、通常、実際のユーザーIDの権限ではアクセスできないファイルを読み取ることができるようにすることを防ぐことを目的としています。

出力

このセクションでは、lsofが各開いているファイルに対してリストする情報を説明します。「他のプログラム用の出力」セクションには、他のプログラムによって処理できる出力に関する追加情報があります。

^ sofは、印刷可能な(isprint(3)によって印刷可能と宣言されている)8ビット文字のみを出力します。印刷できない文字は、Cの\`[bfrnt]\`形式、制御文字の\``\^'形式(例:\``\``@'\``\)、または16進数の\``\x\`形式(例:\``\``xab``)のいずれかの形式で印刷されます。スペースは、COMMAND列(\``\``x20``)では印刷できず、それ以外の場合は印刷可能です。

一部のプラットフォームでは、lsofが使用するマシンのヘッダーファイルmachine.hHASSETLOCALEが定義されている場合、lsofは言語ロケールの拡張8ビット文字を出力します。lsofプロセスには、isprint(3)によって印刷可能と見なされる拡張文字を含む、既知の言語ロケールを表す言語ロケール環境変数(例:LANG)が提供されている必要があります。そうでない場合、lsofは拡張文字を印刷できない文字と見なし、上記の印刷できない文字のルールに従ってそれらを出力します。プラットフォームのsetlocale(3)のmanページを参照して、LANGの代わりに使用できる他の環境変数(例:LC_ALLLC_CTYPEなど)を確認してください。


Lsof の言語ロケールサポートは、machine.h ヘッダーファイルで HASSETLOCALEHASWIDECHAR が定義され、かつ lsof プロセスの適切な環境変数に適切な言語ロケールが定義されている場合、ワイド文字(例:UTF-8)もサポートします。これらの条件が満たされている場合、ワイド文字は iswprint(3) が印刷可能と報告する場合に印刷されます。

^ ASSETLOCALEHASWIDECHAR、および適切な言語ロケールが定義されていない場合、または iswprint(3) が印刷不可能なワイド文字を報告する場合、lsof はワイド文字を印刷不可能な文字とみなし、上記で述べた印刷不可能な文字に関するルールに従って、それぞれの 8 ビットを印刷します。

詳細については、lsof FAQ の「言語ロケールサポート」に関する質問を参照してください(FAQ セクションではその場所を示しています)。

Lsof は、実行するたびに動的に出力列のサイズを調整し、各列が最小サイズになるように保証します。また、各列は前の列から少なくとも 1 つのスペースで区切られるように保証します。

COMMAND は、プロセスに関連付けられた UNIX コマンド名の最初の 9 文字です。`+c w` オプションでゼロでない `w` 値が指定された場合、この列には、プロセスに関連付けられた UNIX コマンド名の最初の `w` 文字(ただし、lsof に UNIX ダイアレクトによって提供される文字数まで)が含まれます。(`+c w` コマンドの説明、または lsof FAQ を参照してください。FAQ セクションではその場所を示しています。)

^ ` が列のタイトルの長さ(つまり、COMMAND)よりも小さい場合、w` はその長さに引き上げられます。

^ c w オプションでゼロの w 値が指定された場合、この列には、プロセスに関連付けられた UNIX コマンド名のすべての文字が含まれます。

カーネルの構造内に保持されているすべてのコマンド名文字は、コマンド名記述子(c)が指定された場合に、フィールド出力に表示されます。フィールド出力の選択と、関連するコマンド名記述子については、「他のコマンドの出力」セクションを参照してください。

PID は、プロセスのプロセス ID です。

TID は、タスク(スレッド)ID で、ダイアレクトがタスク(スレッド)レポートをサポートし、タスク(スレッド)がリストされている場合に表示されます。(ヘルプ出力(つまり、`-h` または `-?` オプションの出力)にこのオプションが表示される場合、ダイアレクトはタスク(スレッド)レポートをサポートします。)

Linux では、空白の TID 列はプロセス(つまり、タスクではない)を示します。


TASKCMD は、タスクコマンド名です。通常、これは COMMAND 列に記載されているプロセス名と同じですが、一部のタスク実装 (例: Linux) では、タスクがコマンド名を変更することが許可されています。

TASKCMD 列の幅は、COMMAND 列と同じサイズの制限を受けます。

ZONE は、Solaris 10 以降のゾーン名です。この列は、-z オプションで選択する必要があります。

SECURITY-CONTEXT は、SELinux セキュリティコンテキストです。この列は、-Z オプションで選択する必要があります。-Z オプションは、実行中の Linux カーネルで SELinux が無効になっている場合、使用できません。

PPID は、プロセスの親プロセス ID です。これは、-R オプションが指定された場合にのみ表示されます。

PGID は、プロセスに関連付けられているプロセスグループ ID です。これは、-g オプションが指定された場合にのみ表示されます。

USER は、プロセスが属するユーザーのユーザー ID 番号またはログイン名で、通常は [ps]({filename}../../ps)(1) で報告されるものと同じです。ただし、Linux では、USER は lsof がプロセスの情報を見つける /proc/<PID>/ ディレクトリを所有するユーザー ID 番号またはログイン名です。通常、これは [ps]({filename}../../ps)(1) で報告される値と同じですが、プロセスが有効なユーザー ID を変更した場合、異なる場合があります。(-l オプションの説明を参照して、ユーザー ID 番号またはログイン名がいつ表示されるかを確認してください。)

FD は、ファイルまたは次のいずれかのファイル記述子番号です。

cwd は、現在の作業ディレクトリです。
Lnn は、ライブラリ参照 (AIX) です。
ctty は、文字端末です。
DEL は、削除されたファイルです。
err は、FD 情報エラーです (NAME 列を参照)。
fp は、Fileport (Darwin) です。
jld は、jail ディレクトリ (FreeBSD) です。
ltx は、共有ライブラリのテキスト (コードとデータ) です。
Mxx は、16 進数メモリマップ型番号 xx です。
m86 は、DOS Merge マップファイルです。
mem は、メモリマップファイルです。
mmap は、メモリマップデバイスです。
NOFD は、Linux の /proc/<PID>/fd ディレクトリを開くことができない場合に使用されます。ディレクトリパスは NAME 列に表示され、その後にエラーメッセージが表示されます。
pd は、親ディレクトリです。
Rnn は、不明な pregion 番号 (HP-UX) です。
rtd は、ルートディレクトリです。
twd は、タスクごとの現在の作業ディレクトリです。
txt は、プログラムテキスト (コードとデータ) です。
v86 は、VP/ix マップファイルです。

FD の後には、ファイルが開かれているモードを示す次の文字のいずれかが続きます。

r は、読み取りアクセス用です。
w は、書き込みアクセス用です。
u は、読み取りおよび書き込みアクセス用です。
スペースは、モードが不明でロックがない場合に続きます。
`-` は、モードが不明でロックがある場合に続きます。

モード文字の後に、ファイルに適用されているロックの種類を示す次のロック文字のいずれかが続きます。

N は、Solaris NFS の不明な種類のロックです。
r は、ファイルの一部に対する読み取りロックです。
R は、ファイル全体に対する読み取りロックです。
w は、ファイルの一部に対する書き込みロックです。
W は、ファイル全体に対する書き込みロックです。
u は、任意の長さの読み取りおよび書き込みロックです。
U は、不明な種類のロックです。
x は、SCO OpenServer Xenix のファイルの一部に対するロックです。
X は、SCO OpenServer Xenix のファイル全体に対するロックです。
スペースは、ロックがないことを示します。

LOCKSセクションを参照して、ロック情報文字の詳細を確認してください。

FD列の内容は、後処理スクリプトで解析するための単一のフィールドです。 9999より大きいFD番号は、「*」の後に最後の3桁で省略されます。例:10001は「*001」として表示されます。

TYPEは、ファイルに関連付けられたノードのタイプです。例:VDIR、VREGなど。

または、「ax25」はLinux AX.25ソケットです。

または、「a_inode」は匿名inodeです。

または、「icmp」はICMPソケットです。

または、「inet」はインターネットドメインソケットです。

または、「ipx」はIPXソケットです。

または、「key」は内部キー管理ソケットです。

または、「lla」はHP-UXリンクレベルアクセスファイルです。

または、「ndrv」はネットドライバソケットです。

または、「netlink」はネットリンクソケットです。

または、「pack」はパケットソケットです。

または、「ppp」はPPPソケットです。

または、「raw」はRawソケットです。

または、「raw6」はRaw IPv6ソケットです。

または、「rte」はAF_ROUTEソケットです。

または、「sock」は不明なドメインのソケットです。

または、「systm」はシステムソケットです。

または、「unix」はUNIXドメインソケットです。

または、「x.25」はHP-UX x.25ソケットです。

または、「ATALK」はAppleTalkソケットです。

または、「BLK」はブロック特殊ファイルです。

または、「CHR」はキャラクタ特殊ファイルです。

または、「DEL」はLinuxマップファイルで、削除されています。

または、「DIR」はディレクトリです。

または、「DOOR」はVDOORファイルです。

または、「EVENTFD」はeventfdです。

または、「FIFO」はFIFO特殊ファイルです。

または、「FSEVENTS」はfseventsです。

または、「IPv4」はIPv4ソケットです。

または、「IPv6」は、アドレスがIPv4であり、IPv6アドレスにマップされている、開いているIPv6ネットワークファイルです。

または、「KQUEUE」はBSDスタイルのカーネルイベントキューファイルです。

または、「LINK」はシンボリックリンクファイルです。

または、「MPB」は多重化されたブロックファイルです。

または、「MPC」は多重化されたキャラクタファイルです。

または、「PAS」は/proc/asファイルです。

または、「PAXV」は/proc/auxvファイルです。

または、「PCRE」は/proc/credファイルです。

または、「PCTL」は/proc制御ファイルです。

または、「PCUR」は現在の/procプロセスです。

または、「PCWD」は現在の/procワーキングディレクトリです。

または、「PDIR」は/procディレクトリです。

または、「PETY」は/proc実行可能タイプ(etype)です。

または、「PFD」は/procファイル記述子です。

または、「PFDR」は/procファイル記述子ディレクトリです。

または、「PFIL」は実行可能な/procファイルです。

または、「PFPR」は/proc FPレジスタセットです。

または、「PGD」は/proc/pagedataファイルです。

または、「PGID」は/procグループ通知ファイルです。

または、「PIPE」はパイプです。

または、「PLC」は/proc/lwpctlファイルです。

または、「PLDR」は/proc/lpwディレクトリです。

または、「PLDT」は/proc/ldtファイルです。

または、「PLPI」は/proc/lpsinfoファイルです。

または、「PLST」は/proc/lstatusファイルです。

または、「PLU」は/proc/lusageファイルです。

または、「PLWG」は/proc/gwindowsファイルです。

または、「PLWI」は/proc/lwpsinfoファイルです。

または、「PLWS」は/proc/lwpstatusファイルです。

または、「PLWU」は/proc/lwpusageファイルです。

または、「PLWX」は/proc/xregsファイルです。

または、「PMAP」は/procマップファイル(map)です。

または、「PMPS」は/proc/mapsファイルです。

または、「PMEM」は/procメモリイメージファイルです。

または、`/proc` プロセス通知ファイルの場合は ``PNTF''。

または、`/proc/object` ファイルの場合は ``POBJ''。

または、`/proc/object` ディレクトリの場合は ``PODR''。

または、古い形式の `/proc` 軽量プロセスファイルの場合は ``POLP''。

または、古い形式の `/proc` PID ファイルの場合は ``POPF''。

または、古い形式の `/proc` ページデータファイルの場合は ``POPG''。

または、SYSV 名前付きパイプの場合は ``PORT''。

または、`/proc` レジスタファイルの場合は ``PREG''。

または、`/proc/rmap` ファイルの場合は ``PRMP''。

または、プロセッサ記述子の場合は ``PROCDSC''。

または、`/proc` ルートディレクトリの場合は ``PRTD''。

または、`/proc/sigact` ファイルの場合は ``PSGA''。

または、`/proc/psinfo` ファイルの場合は ``PSIN''。

または、`/proc` ステータスファイルの場合は ``PSTA''。

または、POSIX メッセージキューファイルの場合は ``PSXMQ''。

または、POSIX セマフォファイルの場合は ``PSXSEM''。

または、POSIX 共有メモリファイルの場合は ``PSXSHM''。

または、`/dev/pts` ファイルの場合は ``PTS''。

または、`/proc/usage` ファイルの場合は ``PUSG''。

または、`/proc/watch` ファイルの場合は ``PW''。

または、`/proc/xmap` ファイルの場合は ``PXMP''。

または、通常のファイルの場合は ``REG''。

または、共有メモリファイルの場合は ``SHM''。

または、共有メモリトランスポートファイルの場合は ``SMT''。

または、ストリームの場合は ``STR''。

または、ストリームソケットの場合は ``STSO''。

または、不明なファイルの場合は ``UNKN''。

または、不明な現在の作業ディレクトリの場合は ``UNKNcwd''。

または、不明な削除されたファイルの場合は ``UNKNdel''。

または、不明なファイル記述子の場合は ``UNKNfd''。

または、不明なメモリマップされたファイルの場合は ``UNKNmem''。

または、不明なルートディレクトリの場合は ``UNKNrtd''。

または、不明なプログラムテキストの場合は ``UNKNtxt''。

または、名前のないファイルの場合は ``UNNM''。

または、OpenServer Xenix の不明なタイプの特殊ファイルの場合は ``XNAM''。

または、OpenServer Xenix のセマフォファイルの場合は ``XSEM''。

または、OpenServer Xenix の共有データファイルの場合は ``XSD''。

または、サポートされていないファイルの場合は ``UNSP''。

または、対応する名前が不明な場合は、4 つのタイプ番号のオクテット。

FILE-ADDR は、`+f` が指定された場合に、カーネルファイル構造のアドレスが含まれます。

FCT は、`+f` が指定された場合に、カーネルファイル構造からのファイル参照カウントが含まれます。

FILE-FLAG は、`g` または `G` が `+f` に指定された場合、このフィールドには、カーネルファイル構造の `f_flag[s]` メンバーの内容と、カーネルのプロセスごとのオープンファイルフラグ(利用可能な場合)が含まれます。`G` は、それらを 16 進数で表示し、`g` は、短縮名の形式で表示します。2 つのリストを、コンマで区切り、セミコロン (`;`) で区切って表示できます。最初のリストには、次の表の `f_flag[s]` 値の短縮名を含めることができます。

AIO     非同期 I/O (例: FAIO)
AP      追加
ASYN        非同期 I/O (例: FASYNC)
BAS     ブロック、テスト、および使用中のセット
BKIU        使用中の場合にブロック
BL      ブロックオフセットを使用
BSK     ブロックシーク
CA      コピー回避
CIO     同時 I/O
CLON        クローン
CLRD        CL 読み取り
CR      作成
DF      遅延
DFI     遅延 IND
DFLU        データフラッシュ
DIR     直接
DLY     遅延
DOCL        クローンを実行
DSYN        データのみの整合性
DTY     ディレクトリでなければならない
EVO     イベントのみ
EX      実行のために開く
EXCL        排他的に開く
FSYN        同期書き込み
GCDF        AIX で `unp_gc()` 実行中に遅延
GCMK        AIX で `unp_gc()` 実行中にマーク
GTTY        `/dev/tty` を介してアクセス
HUP     HUP が進行中
KERN        カーネル
KIOC        カーネルが発行した ioctl
LCK     ロックを持っている
LG      大きなファイル
MBLK        ストリームメッセージブロック
MK      マーク
MNT     マウント
MSYN        多重同期
NATM        atime の更新をしない
NB      ノンブロッキング I/O
NBDR        BDRM チェックを行わない
NBIO        SYSV ノンブロッキング I/O
NBF     N バッファリングが有効
NC      キャッシュしない
ND      遅延しない
NDSY        データ同期を行わない
NET     ネットワーク
NFLK        リンクを追跡しない
NMFS        NM ファイルシステム
NOTO        バックグラウンド停止を無効にする
NSH     共有しない
NTTY        制御 TTY がない
OLRM        OLR ミラー
PAIO        POSIX 非同期 I/O
PATH        パス
PP      POSIX パイプ
R       読み取り
RC      ファイルおよびレコードロックキャッシュ
REV     取り消された
RSH     共有読み取り
RSYN        読み取り同期
RW      読み取りおよび書き込みアクセス
SL      共有ロック
SNAP        調理されたスナップショット
SOCK        ソケット
SQSH        Sequent でオープン時に共有セットを設定
SQSV        Sequent で SVM セットをオープン時に設定
SQR     Sequent でオープン時にセットを修復
SQS1        Sequent で完全な共有オープン
SQS2        Sequent で部分的な共有オープン
STPI        I/O を停止
SWR     同期読み取り
SYN     書き込み中のファイル整合性
TCPM        TCP 競合を回避
TMPF        一時ファイル
TR      切り捨て
W       書き込み
WKUP        並列 I/O 同期
WTG     並列 I/O 同期
VH      vhangup 保留中
VTXT        仮想テキスト
XL      排他的ロック

この名前のリストは、`<fcntl.h>`、`<linux/fs.h>`、`<sys/fcntl.c>`、`<sys/fcntlcom.h>`、および`<sys/file.h>`のダイアレクトヘッダーファイル内のF* `#define`から派生したものです。対応関係を示すリストについては、`common.h`ヘッダーファイルを参照してください。

2番目のリスト(セミコロンの後)には、以下の表にあるカーネルのプロセスごとのオープンファイルフラグの省略形が含まれている場合があります。

ALLC    割り当て済み
BR  ファイルは読み込まれました
BHUP    SIGHUPによってアクティビティが停止されました
BW  ファイルは書き込まれました
CLSG    クローズ中
CX  クローズ・オン・エグゼック(`fcntl(F_SETFD)`を参照)
LCK ロックが適用されました
MP  メモリマップ
OPIP    オープン保留中(進行中)
RSVW    予約済み待機
SHMT    UF_FSHMATが設定されました(AIX)
USE 使用中(マルチスレッド)

NODE-ID(または一部のダイアレクトではINODE-ADDR)には、`+f`で`n`が指定された場合、ファイルノードの一意の識別子(通常はカーネルのvnodeまたはinodeアドレスですが、デバイス番号とノード番号の連結である場合もあります)が含まれます。

DEVICEには、文字デバイス、ブロックデバイス、通常ファイル、ディレクトリ、またはNFSファイルのデバイス番号がカンマで区切られて含まれます。

または、Tru64 UNIXのメモリファイルシステムノードの場合は、「メモリ」が含まれます。

または、Solarisソケットストリームのプライベートデータ領域のアドレスが含まれます。

または、ファイルを識別するカーネル参照アドレスが含まれます(カーネル参照アドレスは、FIFOなどに使用できます)。

または Linux AX.25 ソケットデバイスのベースアドレスまたはデバイス名。

通常、Tru64 UNIX カーネルアドレスの下位 32 ビットのみが表示されます。

SIZE、SIZE/OFF、または OFFSET は、ファイルサイズまたはファイルオフセット(バイト単位)です。値は、利用可能な場合にのみこの列に表示されます。lsof は、ファイルの種類と lsof のバージョンに応じて、サイズまたはオフセットのいずれかの値を表示します。

一部の UNIX 形式では、lsof はカーネルデータソースから正確または一貫性のあるファイルオフセット情報を取得できない場合があります。これは、特定の種類のファイル(例:ソケットファイル)でのみ発生することがあります。他の場合、ファイルには実際のサイズがない場合があります(例:ソケット、FIFO、パイプ)。このため、lsof は、カーネルバッファ記述子で検出されたコンテンツ量(例:ソケットバッファサイズカウントまたは TCP/IP ウィンドウサイズ)を、それらのサイズとして表示します。詳細については、lsof FAQ(FAQ セクションで場所が示されています)を参照してください。

ファイルサイズは 10 進数で表示されます。オフセットは通常、10 進数で表示され、8 桁以下の場合は先頭に「0t」、それより大きい場合は先頭に「0x」が付きます。(-o o オプションの説明を参照して、8 が別の値にデフォルトになる場合があるかどうかを確認してください。)

したがって、先頭の「0t」と「0x」は、列にサイズとオフセットの両方が含まれている場合(つまり、列のタイトルが SIZE/OFF の場合)に、オフセットであることを示します。

-o オプションが指定されている場合、lsof は常にファイルオフセットを表示します(または、オフセットが利用できない場合は何も表示しません)。列には OFFSET というラベルが付けられます。オフセットは常に「0t」または「0x」で始まります(上記の説明を参照)。

lsof ユーザーは、-o o オプションを使用して、「0t」から「0x」への切り替えを制御できます。詳細については、その説明を参照してください。

-s オプションが指定されている場合、lsof は常にファイルサイズを表示します(または、サイズが利用できない場合は何も表示しません)。列には SIZE というラベルが付けられます。-o オプションと -s オプションは互いに排他的であり、両方を同時に指定することはできません。

-H オプションが指定されている場合、lsof はファイルサイズを人間が読める形式で表示します。

固定サイズを持たないファイル(例:ディスクデバイスに存在しないファイル)の場合、lsof は、ファイルが定義されているカーネル構造にファイルに関する現在のサイズまたは位置の情報が含まれている場合は、それらの情報を表示します。

NLINK は、+L が指定された場合にファイルリンクカウントを含みます。

NODE は、ローカルファイルのノード番号です。

または、NFS ファイルの場合は、サーバーホスト上の inode 番号です。

または、インターネットプロトコルタイプです(例:「TCP」)。

または、「STR」はストリームです。

または、「CCITT」は HP-UX x.25 ソケットです。

または、Linux AX.25 ソケットデバイスの IRQ または inode 番号です。

NAME は、ファイルが格納されているマウントポイントとファイルシステムの名前です。

または、names オプションで指定されたファイルの名前です(シンボリックリンクが解決された後)。

または、文字特殊デバイスまたはブロック特殊デバイスの名前です。

または、ネットワークファイルのローカルアドレスとリモートアドレスです。ローカルホスト名または IP アドレスの後にコロン(:)、ポート、->、および 2 つの部分で構成されるリモートアドレスが続きます。IP アドレスは、+|-M、-n、および -P オプションに応じて、数字または名前で報告される場合があります。コロンで区切られた IPv6 アドレスは、角括弧で囲まれます。IPv4 INADDR_ANY および IPv6 IN6_IS_ADDR_UNSPECIFIED アドレス、およびゼロポート番号は、アスタリスク(*)で表されます。UDP 宛先アドレスの後に、宛先への最後のパケットが送信されてからの経過時間が続く場合があります。TCP、UDP、および UDPLITE リモートアドレスの後に、TCP/TPI 情報が括弧で囲んで表示される場合があります。これには、状態(例:「(ESTABLISHED)」、「(Unbound)」)、キューサイズ、およびウィンドウサイズが含まれます(すべての形式で表示されるわけではありません)。netstat(1) で報告されるものと同様です。-T オプションの説明または、OUTPUT FOR OTHER PROGRAMS の TCP/TPI フィールドの説明を参照して、状態、キューサイズ、およびウィンドウサイズの詳細を確認してください。

または、UNIXドメインソケットのアドレスまたは名前、場合によってはストリームクローンデバイス名、ファイルシステムオブジェクトのパス名、ローカルおよびリモートのカーネルアドレス、
ソケットペア情報、およびバインドされたvnodeアドレス。

または、NFSファイルのローカルおよびリモートのマウントポイント名。

または、「STR」、続いてストリーム名。

または、ストリーム文字デバイス名、続いて「->」、そしてストリーム名、または「->」で区切られたストリームモジュール名のリスト。

または、「STR:」、続いてSCO OpenServerストリームデバイスおよびモジュール名、それぞれ「->」で区切る。

または、システムディレクトリ名、「--」、そして、lsofがカーネルの名前キャッシュで見つけることができるパス名のコンポーネント(詳細については、「カーネルの名前キャッシュ」セクションを参照)。

または、「PIPE->」、続いてSolarisカーネルパイプの宛先アドレス。

または、「COMMON:」、続いてSolaris共通vnodeのvnodeデバイス情報構造体のデバイス名。

または、アドレスファミリ、続いてスラッシュ(/)、そして、14個のカンマで区切られた非インターネット生のソケットアドレスのバイト。

または、HP-UX X.25ローカルアドレス、続いて仮想接続番号(存在する場合)、そしてリモートアドレス(存在する場合)。

または、「(dead)」、これは関連付けが解除されたTru64 UNIXファイルで、通常はTIOCNOTTY ioctlでフラグが設定され、デーモンによって閉じられたターミナルファイルです。

または、「rd=<オフセット>」および「wr=<オフセット>」、これはFIFOの読み取りおよび書き込みオフセットの値です。

または、「clone n:/dev/event」、これはSCO OpenServerの/dev/eventデバイスのファイルクローンで、nはファイルのマイナーデバイス番号です。

または、「(socketpair: n)」、これはSolaris 2.6、8、9、または10のUNIXドメインソケットで、socketpair(3N)ネットワーク関数によって作成されました。

または、「no PCB」、これはプロトコルブロックが関連付けられていないソケットファイルで、オプションで「、CANTSENDMORE」を付けて、ソケットでの送信が無効になっていることを示すことができます。または、「、CANTRCVMORE」を付けて、ソケットでの受信が無効になっていることを示すことができます(例:[shutdown]({filename}../../shutdown)(2)関数)。

または、Linux IPXソケットファイルのローカルアドレスとリモートアドレスを、`<net>:[<node>:]<port>` の形式で表示し、その後に括弧で囲んで、送信キューと受信キューのサイズ、および接続状態を表示します。

または、UnixWare 7.1.1以降のインカーネルUNIXドメインソケットの場合は、``dgram''または``stream''と表示し、その後にコロン(:)を付けて、利用可能な場合はローカルパス名、その後に``->''、利用可能な場合はリモートパス名または16進数形式のカーネルソケットアドレスを表示します。

または、Linux SCTPソケットの場合は、関連付け値、関連付けインデックス、エンドポイント値、ローカルアドレス、ローカルポート、リモートアドレス、およびリモートポートを表示します。

または、``protocol: '' の後に、Linuxソケットのプロトコル属性を表示します。

``namefs''ファイルシステムをサポートするダイアレクトの場合、`fattach(3C)`を使用して、あるファイルを別のファイルにアタッチできます。この場合、`lsof`は`NAME`列に``(FA:<address1><direction><address2>)``を追加します。`<address1>`と`<address2>`は16進数のvnodeアドレスです。`<direction>`は、`<address2>`が`<address1>`のアドレスを持つこのvnodeに`fattach`されている場合は``<-''、`<address1>`、つまりこのvnodeのvnodeアドレスが`<address2>`に`fattach`されている場合は``->''になります。`<address1>`は、すでに`DEVICE`列に表示されている場合は省略できます。

`lsof`は、Solaris 10のオープンファイルに対して、`NAME`列に2つの付加的な情報を追加できます。`lsof`がパス名を疑問視する場合は``(?)''、`-X`オプションが指定され、`lsof`がオープンファイルのパス名が削除されたことを検出した場合は``(deleted)''です。これらの`NAME`列への追加に関する詳細については、`lsof`のFAQ(FAQセクションで場所が示されています)を参照してください。

ロック

^ sofは、UNIXのさまざまなロックを1つの文字で適切にレポートすることができません。レポートする内容は、カーネルから取得した情報とレポート形式の制限との妥協点です。

さらに、プロセスがファイルに対して複数のバイトレベルのロックを保持している場合、lsofは最初に検出したロックの状態のみをレポートします。バイトレベルのロックの場合、ロック文字は小文字でレポートされます(例:rw、またはx)。それ以外の場合は、フルファイルロックに対しては、大文字でレポートされます。

通常、lsofは、ローカルのファイルに対してローカルプロセスによって保持されているロックのみをレポートできます。ローカルプロセスがリモートでマウントされた(例:NFS)ファイルにロックを設定する場合、リモートサーバーホストが通常、ロック状態を記録します。ただし、Solaris 2.3のいくつかのパッチレベル、および2.4以降のすべてのバージョンでは、Solarisカーネルがローカル構造にリモートロックに関する情報を記録します。

^ sofは、一部のUNIXダイアレクトのロックをレポートするのが困難です。詳細については、このマニュアルページのBUGSセクションまたはlsofのFAQ(FAQセクションで場所が示されています)を参照してください。

他のプログラムへの出力

^ Fオプションが指定された場合、lsofは他のプログラム(例:awkまたはPerlスクリプト、またはCプログラム)によって処理に適した出力を生成します。

各情報ユニットは、先頭にフィールド識別子が付いて出力され、末尾には NL (012) (または、0 (ゼロ) のフィールド識別子が指定されている場合は NUL (000)) で終了します。フィールドのデータは、フィールド識別子の直後に続き、フィールドの終端まで続きます。

フィールドの出力は、プロセスセットとファイルセットとして考えることができます。プロセスセットは、識別子が p (プロセス ID (PID) 用) のフィールドで始まり、次の PID フィールドまたはそのプロセスの最初のファイルセットのいずれかの開始まで続きます。プロセスセットには、コマンド、プロセスグループ ID (PGID)、タスク (スレッド) ID (TID)、およびユーザー ID (UID) 番号またはログイン名などを識別するフィールドが含まれます。

ファイルセットは、識別子が f (ファイル記述子用) のフィールドで始まり、その後にファイルのアクセスモード、ロック状態、タイプ、デバイス、サイズ、オフセット、inode、プロトコル、名前、およびストリームモジュール名を記述する行が続きます。ファイルセットは、次のファイルまたはプロセスセットのいずれかの開始まで続きます。

NUL (000) フィールド終端文字が、-F オプションに続くフィールド識別子文字リストで 0 (ゼロ) のフィールド識別子文字を使用して選択された場合、lsof は各プロセスセットとファイルセットの末尾に NL (012) 文字を出力します。

lsof は常に 1 つのフィールド、つまり PID (p) フィールドを出力します。繰り返しモードでは、マーカー (m) も出力されます。他のすべてのフィールドは、-F オプションに続くフィールド識別子文字リストでオプションとして宣言できます。フィールド選択文字が、lsof が通常はリストに表示しない項目を識別する場合 (例: PPID、-R オプションで選択)、フィールド文字の指定 (例: -FR) により、その項目のリスト表示も選択されます。

lsof バージョン 4.88 から 4.93.2 までは、常に 1 つ多いフィールド、つまりファイル記述子 (f) フィールドを出力していました。ただし、このバージョンの lsof では出力されません。この変更は、ユーザーが PID フィールドのみを必要とし、ファイル記述子フィールドを必要としないユースケースをサポートするためです。フィールドが必要な場合は、f を明示的に指定してください。

選択されたフィールドのセットによっては、簡単に解析できない場合があります。たとえば、ファイル記述子フィールドが選択されていない場合、ファイルセットを識別するのが難しい場合があります。このような問題を回避できるように、lsof は -F オプションをサポートしています。これにより、NL 終端文字を持つすべてのフィールドが出力されます (-F0 オプションのペアは、NUL 終端文字を持つすべてのフィールドの出力を選択します)。互換性のために、-F または -F0 は生のデバイスフィールドを選択しません。

以下に、lsof が出力するフィールドを示します。最初にリストされている 1 文字は、フィールド識別子です。

a    ファイルアクセスモード
c    プロセスコマンド名 (proc またはユーザー構造体からのすべての文字)
C    ファイル構造体の共有カウント
d    ファイルのデバイス文字コード
D    ファイルのメジャー/マイナーデバイス番号 (0x<16進数>)
f    ファイル記述子
F    ファイル構造体のアドレス (0x<16進数>)
G    ファイルフラグ (0x<16進数>; +fg が続く場合は名前)
g    プロセスグループ ID
i    ファイルの inode 番号
K    タスク ID
k    リンクカウント
l    ファイルのロック状態
L    プロセスのログイン名
m    繰り返し出力の間のマーカー (繰り返しモードでは常に選択)
M    タスクのコマンド名
n    ファイル名、コメント、インターネットアドレス
N    ノード識別子 (0x<16進数>)
o    ファイルのオフセット (0t<10進数> または 0x<16進数>; -o オプションを参照)
p    プロセス ID (常に選択)
P    プロトコル名
r    生のデバイス番号 (0x<16進数>)
R    親プロセス ID
s    ファイルのサイズ (10進数)
S    ファイルのストリーム識別子
t    ファイルのタイプ
T    TCP/TPI 情報。プレフィックスで識別されます (`=` はプレフィックスの一部です)。
QR=<読み取りキューのサイズ>
QS=<送信キューのサイズ>
SO=<ソケットオプションと値> (すべてのダイヤルで使用できるわけではありません)
SS=<ソケット状態> (すべてのダイヤルで使用できるわけではありません)
ST=<接続状態>
TF=<TCP フラグと値> (すべてのダイヤルで使用できるわけではありません)
WR=<読み取りウィンドウサイズ> (すべてのダイヤルで使用できるわけではありません)
WW=<書き込みウィンドウサイズ> (すべてのダイヤルで使用できるわけではありません)
(TCP/TPI 情報は、サポートされているすべての UNIX ダイヤルで報告されるわけではありません。-h または -? ヘルプ出力の -T オプションは、要求できる TCP/TPI 報告の内容を示します。)
u    プロセスのユーザー ID
z    Solaris 10 以降のゾーン名
Z    SELinux セキュリティコンテキスト (SELinux が無効になっている場合は表示されません)
0   フィールド終端文字として NL の代わりに NUL を使用する
19  ダイヤル固有のフィールド識別子 ( -F? の出力は、ダイヤル固有のフィールドで利用できる情報を示します。)

これらの文字とその説明に関するオンラインヘルプ情報を取得するには、-F?オプションペアを指定します。(シェルで必要に応じて?文字をエスケープします。)フィールドの内容に関する追加情報は、出力セクションにあります。

たとえば、-F pcfnは、プロセスID(p)、コマンド名(c)、ファイル記述子(f)、およびファイル名(n)フィールドをNLフィールド終端文字で選択します。-F pcfn0は、同じ出力をNUL(000)フィールド終端文字で選択します。

lsofは、すべてのプロセスまたはファイルセットに対してすべてのフィールドを生成するわけではありません。利用可能なフィールドのみを生成します。いくつかのフィールドは相互に排他的です。ファイルデバイス文字とファイルメジャー/マイナーデバイス番号。ファイルinode番号とプロトコル名。ファイル名とストリーム識別子。ファイルサイズとオフセット。これらの相互に排他的なセットのメンバーのうち、どちらか一方が出力フィールドに表示されますが、両方は表示されません。

通常、lsofは各フィールドの最後にNL(012)文字を追加します。0(ゼロ)フィールド識別子文字を指定して、フィールド終端文字をNUL(000)に変更できます。NUL終端文字は、たとえばxargs(1)や、引用符のメカニズムでフィールド出力の文字範囲を処理できないプログラムで処理する場合に、より使いやすくなる場合があります。NULフィールド終端文字を使用する場合、lsofは各プロセスとファイルセットの最後にNL(012)を追加します。

lsofの出力フィールドを処理できるプログラムを作成するための3つの支援ツールが、lsofのディストリビューションに含まれています。1つ目は、Cヘッダーファイルlsof_fields.hで、これには、フィールド識別子文字、テーブルに格納するためのインデックス、およびプログラムにコンパイルできる説明文字列が含まれています。lsofはこのヘッダーファイルを使用します。


2 番目の支援ツールは、awk、Perl 4、Perl 5 で記述された、フィールド出力を処理するサンプルスクリプトのセットです。これらは、lsof ディストリビューションの scripts サブディレクトリにあります。

3 番目の支援ツールは、lsof のテストスイートで使用される C ライブラリです。テストスイートは C で記述されており、フィールド出力を利用して lsof の正しい動作を検証します。このライブラリは、lsof ディストリビューションの tests/LTlib.c ファイルにあります。このライブラリは、最初の支援ツールである lsof_fields.h ヘッダーファイルを使用します。

ブロックとタイムアウト

lsof は、lstat(2)、readlink(2)、および stat(2) などの、カーネルが使用する一部の関数によってブロックされる可能性があります。これらの関数は、NFS ファイルシステムがマウントされているホストがアクセス不能になった場合など、カーネル内で停止します。

lsof は、タイマーと子プロセスを使用してこれらのブロックを解除しようとしますが、これらの手法は完全に信頼できるわけではありません。lsof がブロックを解除できた場合、エラーメッセージとともにその解除が報告されます。これらのメッセージは、-t および -w オプションで抑制できます。

デフォルトのタイムアウト値は、-h または -? オプションで表示でき、-S [t] オプションで変更できます。t の最小値は 2 秒ですが、小さい値は避けるべきです。システムの応答が遅いと、短いタイムアウトが予期せず期限切れになり、lsof が出力を生成する前に停止してしまう可能性があるためです。

lsof がマウントされたファイルシステム情報へのアクセス中にブロックを解除する必要がある場合、通常は処理を続行しますが、表示できるオープンファイルの情報の量が少なくなります。

lsof は、-O オプションを指定することで、タイマーと子プロセスの保護を使用せずに、カーネル関数がブロックする可能性のある状況を回避するように指示できます。これにより、lsof はより少ないオーバーヘッドで起動できるようになりますが、lsof がカーネル内のブロックを引き起こす可能性のある状況に完全にさらされることになります。このオプションは慎重に使用してください。

カーネルブロックの回避

-b オプションを使用して、lsof にカーネル関数を使用しないように指示することで、カーネルブロックを回避できます。ただし、いくつかの注意点があります。

まず、このオプションを使用するには、通常、システムは lstat(2) および stat(2) カーネル関数で lsof が通常取得するデバイス番号の代わりに、代替のデバイス番号を提供する必要があります。代替のデバイス番号の詳細については、ALTERNATIVE DEVICE NUMBERS セクションを参照してください。

次に、lsof に特定のファイルを検索するように指示するには、ファイルシステム名を使用する必要があります。これは、lsof が lsof オプションでリストされているファイルのデバイス番号と inode 番号を知る必要があり、-b オプションでは lsof がこれらの番号を取得できないためです。さらに、lsof は代替ファイルシステムのみのデバイス番号しか持っていないため、ファイルシステム上のファイルの検索能力は、代替の可用性と正確性に完全に依存します。代替が利用できない場合、または不正確な場合、lsof は指定されたファイルシステム上のファイルを検索できません。

lsof がシステムのマウントテーブルから取得するファイルシステムディレクトリの名前がシンボリックリンクである場合、lsof はリンクを解決できません。 これは、-b オプションによって、lsof がシンボリックリンクを解決するために使用するカーネルの [readlink]({filename}../../readlink)(2) 関数を回避するためです。

最後に、-b オプションを使用すると、lsof は、-b オプションで回避するように指示されたカーネル関数を使用する必要がある場合に、警告メッセージを発行します。 -w オプションを指定することでこれらのメッセージを抑制できますが、そうすると、警告メッセージで報告される代替デバイス番号が表示されなくなります。

代替デバイス番号

一部の環境では、lsof が lstat(2) および stat(2) カーネル関数を介してマウントされたファイルシステムに関する情報を取得できない場合、または -b オプションを指定した場合に、ブロックを分割する必要があります。 このような場合、lsof は必要な情報のいくつかを、デバイス番号と、場合によってはファイルシステムタイプから取得できます。 これはシステムマウントテーブルから取得されます。 可能な場合、lsof は取得したデバイス番号を報告します。 (この報告を抑制するには、-w オプションを指定します。)

システムマウントテーブルが /etc/mtab または /etc/mnttab ファイルでサポートされている場合、オプションフィールドを含むマウントポイントのオプション文字列に dev=xxxx フィールドを追加することで、このプロセスを支援できます。 ただし、一部の環境(最近の Solaris /etc/mnttab または Linux /proc/mounts など)では、マウントテーブルが読み取り専用であり、変更できないことに注意してください。

また、+m および +m m オプションを使用してデバイス番号を指定することもできますが、これは環境によってサポートされている必要があります。 lsof の -h または -? オプションの出力から、+m および +m m オプションが利用可能かどうかを確認してください。

xxxx の部分は、ファイルシステムのデバイス番号の 16 進数です。 (適切な値については、lstat(2) および stat(2) 関数の出力の st_dev フィールドを参照してください。) 以下に、Sun Solaris 2.6 /etc/mnttab からの、リモート NFS サーバーからマウントされたファイルシステムの例を示します。

nfs  ignore,noquota,dev=2a40001

マウントテーブルファイルに dev=xxxx エントリを含めることには、特にリモート NFS サーバーからマウントされたファイルシステムの場合に利点があります。 リモートサーバーがクラッシュし、クライアントの1つで lsof を実行してそのユーザーを識別したい場合、lsof はファイルシステムの lstat(2) および stat(2) 関数の出力にアクセスできない可能性があります。 マウントテーブルからファイルシステムのデバイス番号を取得できる場合、クラッシュした NFS サーバーで開いているファイルを表示できます。

ASCII /etc/mtab または /etc/mnttab ファイルを使用しない環境でも、内部マウントテーブルに代替デバイス番号を提供する場合があります。 これには、AIX、Apple Darwin、FreeBSD、NetBSD、OpenBSD、および Tru64 UNIX が含まれます。 lsof はこれらの環境の代替デバイス番号を取得する方法を知っており、ファイルシステムに対して lstat(2) または stat(2) を実行しようとしたときにブロックされた場合に、それを使用します。

*   `$LSOF_DEVICE_CACHE` 環境変数
*   `/etc/lsof.conf` ファイル
*   `lsof` のコンパイル時

通常、このファイルは /var/lsof/dev.cache にあります。

デバイスキャッシュファイルの内容は、lsof が実行されるたびに更新されません。代わりに、lsof が最初に実行されるときに、または、lsof -d オプションが指定されたときに、デバイスキャッシュファイルが更新されます。

デバイスキャッシュファイルの場所を変更するには、$LSOF_DEVICE_CACHE 環境変数を設定します。たとえば、デバイスキャッシュファイルを /tmp/dev.cache に配置するには、次のコマンドを実行します。

export LSOF_DEVICE_CACHE=/tmp/dev.cache

^ etc/lsof.conf ファイルにデバイスキャッシュファイルの場所を設定することもできます。このファイルが存在しない場合は、作成する必要があります。ファイルに次の行を追加します。

device_cache=/tmp/dev.cache

最後に、lsof をコンパイルするときに、デバイスキャッシュファイルの場所を指定できます。これを行うには、lsof をコンパイルするときに、-DDEVICE_CACHE=/tmp/dev.cache オプションを使用します。

たとえば、lsof をコンパイルして、デバイスキャッシュファイルを /tmp/dev.cache に配置するには、次のコマンドを実行します。

make DEVICE_CACHE=/tmp/dev.cache
make install

-Dオプションからのパス。

環境変数からのパス。 システム全体に適用されるパス。 個人のパス(デフォルト)。 環境変数によって変更された個人のパス。

-h、-D?、または -? ヘルプオプションの出力を参照して、現在のデバイスキャッシュのサポート状態を確認してください。ヘルプ出力には、lsofの現在の実行時に有効になっているデフォルトの読み取りモードのデバイスキャッシュファイルパスがリストされます。-D?オプションの出力には、読み取り専用および書き込みのデバイスキャッシュファイルのパス、適用される環境変数の名前、および個人のデバイスキャッシュファイルパス形式がリストされます。

lsofは、デバイスキャッシュファイルが誤ってまたは悪意を持って変更されたかどうかを、整合性チェックによって検出できます。これには、ファイルのコンテンツに対する16ビットの巡回冗長検査(CRC)サムの計算と検証が含まれます。lsofがファイルに問題があることを検知した場合、警告を発し、現在のキャッシュファイルを削除して新しいコピーを作成しようとしますが、これはプロセスが正当に書き込みできるパスにのみ行われます。

lsofプロセスがデバイスキャッシュファイルを読み取ろうとするパスは、書き込むことができるパスと同じではない場合があります。したがって、lsofがデバイスキャッシュファイルを更新する必要があることがわかった場合、不正または古いバージョンのファイルを読み取ったパスとは異なるパスに書き込むことがあります。

-Drオプションが利用可能な場合、新しいデバイスキャッシュファイルの書き込みを抑制できます。(パス名引数なしで指定すると、常に利用可能になります。)

新しいデバイスがシステムに追加されると、デバイスキャッシュファイルを再作成する必要がある場合があります。lsofは、デバイスキャッシュファイルのmtimeを、/dev(または/devices)ディレクトリのmtimeとctimeと比較するため、通常は新しいデバイスが追加されたことを検出し、その場合、警告メッセージを発し、デバイスキャッシュファイルを再構築しようとします。

lsofがデバイスキャッシュファイルを書き込むときは、所有者を実行プロセスの実際のUIDに設定し、パーミッションモードを0600に設定します。これにより、ファイルの読み取りおよび書き込みがファイルの所有者に制限されます。

lsofのパーミッションがデバイスキャッシュファイルへのアクセスに与える影響

lsofの実行ファイルの2つのパーミッションが、デバイスキャッシュファイルへのアクセス能力に影響を与えます。これらのパーミッションは、lsofがインストールされたときにローカルシステム管理者によって設定されます。

最初でまれなパーミッションは、setuid-rootです。これは、lsofが実行されたときに有効になり、その有効なUIDはrootになり、実際のUID(ログインしているユーザーのUID)は変わりません。lsofディストリビューションは、これらのプラットフォーム向けのバージョンでsetuid-rootを実行することを推奨しています。

HP-UX 11.11 および 11.23
Linux

2番目でより一般的なパーミッションは、setgidです。これは、lsofプロセスの有効なグループID(GID)が、カーネルメモリデバイス(例:kmemsys、またはsystem)にアクセスできるものに設定されたときに有効になります。


setgid権限を持つlsofプロセスは、通常、カーネルメモリデバイスにアクセスした後、その権限を放棄します。その場合、lsofはより緩やかなデバイスキャッシュパスの構成を許可できます。lsofの配布版では、これらのバージョンをsetgidで実行し、setgid権限を放棄できるようにすることを推奨しています。

AIX 5.[12] および 5.3-ML1
Apple Darwin 7.x Power Macintosh システム
FreeBSD 4.x、4.1x、5.x および [6789].x(x86ベースのシステム用)
FreeBSD 5.x、[6789].x および 1[012].8(Alpha、AMD64、およびSparc64ベースのシステム用)
HP-UX 11.00
NetBSD 1.[456]、2.x、および3.x(Alpha、x86、およびSPARCベースのシステム用)
OpenBSD 2.[89] および 3.[0-9](x86ベースのシステム用)
SCO OpenServer Release 5.0.6(x86ベースのシステム用)
SCO|Caldera UnixWare 7.1.4(x86ベースのシステム用)
Solaris 2.6、8、9、および10
Tru64 UNIX 5.1

(注:AIX 5L以降のlsofでは、-Xオプションを使用する場合、setuid-root権限が必要です。)

これらのバージョンでは、lsofはデバイスキャッシュをサポートしていないため、実行ファイルに与えられた権限は、デバイスキャッシュファイルには適用されません。

Linux

-Dオプションからのデバイスキャッシュファイルのパス

-Dオプションは、デバイスキャッシュファイルのパスを指定するための限定的な手段を提供します。その?関数は、lsofが使用する読み取り専用および書き込み可能なデバイスキャッシュファイルのパスを報告します。

-D b、r、およびuの関数が利用可能な場合、それらを使用して、キャッシュファイルを特定の場所に構築(b[path])、読み取って再構築しない(r[path])、または読み取って再構築する(u[path])ように要求できます。b、r、およびuの関数は、いくつかの条件の下で制限されています。これらは、lsofプロセスがsetuid-rootで実行されている場合に制限されます。r関数で指定されたパスは、常に読み取り専用であり、利用可能な場合でも同様です。

b、r、およびuの関数は、lsofプロセスがsetgidで実行され、lsofがsetgid権限を放棄しない場合にも制限されます。(setgid権限を放棄しない実装のリストについては、「LSOF PERMISSIONS THAT AFFECT DEVICE CACHE FILE ACCESS」セクションを参照してください。)

さらに、-D関数としてi(無視)が常に利用可能です。

利用可能な場合、b関数はlsofに、stat(2)関数を使用してカーネルからデバイス情報を読み取り、指定されたパスにデバイスキャッシュファイルを構築するように指示します。

利用可能な場合、r関数はlsofに、デバイスキャッシュファイルを読み取るが、更新しないように指示します。-Drにパス引数が伴う場合、それはデバイスキャッシュファイルのパスの名前です。r関数は、パス名引数なしで指定された場合、常に利用可能です。lsofがsetuid-rootで実行されておらず、setgid権限を放棄する場合、パス名引数はr関数に付加できます。

利用可能な場合、u関数はlsofに、デバイスキャッシュファイルを読み取って使用するように指示します。ファイルを読み取れない場合、またはファイルの内容が不正確または古くなっていると判断した場合、カーネルから情報を読み取り、デバイスキャッシュファイルの更新されたバージョンを書き込もうとしますが、書き込めるのは、lsofプロセスの有効なおよび実際のUIDにとって適切なパスのみです。


環境変数からのデバイスキャッシュパス

Lsofがデバイスキャッシュファイルに使用する2番目のパスは、環境変数 LSOFDEVCACHE の内容です。ただし、lsofプロセスがsetuid-rootで実行されている場合、またはプロセスの実際のUIDがrootである場合は、この選択肢は回避されます。

^ SOFDEVCACHE 環境変数から取得したデバイスキャッシュファイルのパスには、さらに制限があります。lsofプロセスがsetgid権限を放棄しない場合、lsofは指定されたパスにデバイスキャッシュファイルを書き込みません。(setgid権限を放棄しない実装については、「デバイスキャッシュファイルへのアクセスに影響を与えるLSOFの権限」のセクションを参照してください。)

ローカルシステム管理者は、lsofをビルドする際に、LSOFDEVCACHE 環境変数の使用を無効にするか、その名前を変更することができます。環境変数の名前については、-D?オプションの出力を確認してください。

システム全体のデバイスキャッシュパス

ローカルシステム管理者は、lsofをビルドする際に、システム全体のデバイスキャッシュファイルを定義することができます。このファイルは、通常、システム起動時または/devまたは/devicesの内容が変更されたときに、特別なシステム管理手順によって作成されます。定義されている場合、これはlsofがデバイスキャッシュファイルを検索する3番目のパスになります。

システム全体のデバイスキャッシュファイルがローカルインストールで使用されているかどうかは、lsofのヘルプオプション(-hまたは-?オプション)の出力を確認することで確認できます。

lsofは、デフォルトではシステム全体のデバイスキャッシュファイルに書き込みません。明示的に-Dオプションを使用して、root権限を持つプロセスで指定する必要があります。ファイルが書き込まれた後、そのプロセスはファイルのアクセス権を0644(所有者読み取り/書き込み、グループ読み取り、その他読み取り)に変更する必要があります。

パーソナルデバイスキャッシュパス(デフォルト)

lsofディストリビューションのデフォルトのデバイスキャッシュファイルのパスは、lsofを実行する実際のUIDのホームディレクトリに記録されます。ホームディレクトリに追加される2番目のパスコンポーネントは、.lsof_hostnameという形式になります。

これはlsofがデバイスキャッシュファイルを検索する4番目のパスであり、通常はデフォルトで使用されます。lsofがビルドされたときにシステム全体のデバイスキャッシュファイルのパスが定義されている場合、この4番目の選択肢は、lsofがシステム全体のデバイスキャッシュファイルを検出できない場合に適用されます。lsofが2つのパスを使用してデバイスキャッシュファイルを読み込むのはこの場合のみです。

hostname部分の2番目のコンポーネントは、gethostname(2)関数によって返される実行中のホストの基本名です。基本名は、gethostname(2)の出力に含まれる最初の.の前の文字、または.を含まない場合はgethostname(2)の出力全体として定義されます。

デバイスキャッシュファイルは、ユーザーIDによって所有され、ユーザーIDのみが読み取りおよび書き込み可能です。つまり、アクセス権は0600です。特定のホストでlsofを実行する各ユーザーIDは、それぞれ異なるデバイスキャッシュファイルを持つことになります。パスのhostname部分は、複数の異なるホストから書き込まれたデバイスキャッシュファイルを、NFSマウントされたホームディレクトリに区別するために使用されます。


このメソッドで形成されるパーソナルデバイスキャッシュファイルのパスは、lsofが読み込もうとし、存在しない場合、または内容が不正確または古くなっている場合に書き込もうとするデバイスキャッシュファイルを表します。

パス名引数なしの-Drオプションは、新しいデバイスキャッシュファイルの書き込みを抑制します。

-D?オプションは、パーソナルデバイスキャッシュファイルを構築するためのフォーマット仕様をリストします。フォーマット仕様で使用される変換は、lsofディストリビューションの00DCACHEファイルで説明されています。

変更されたパーソナルデバイスキャッシュパス

このオプションがローカルシステム管理者によってlsofが構築されたときに定義されている場合、LSOFPERSDCPATH環境変数の内容は、パーソナルデバイスキャッシュファイルのパスのコンポーネントを追加するために使用できます。

LSOFPERSDCPATH変数の内容は、ローカルシステム管理者によって、そのダイアレクトのmachine.hヘッダーファイルで指定されたHASPERSDCフォーマット仕様の「%p」変換でマークされた場所に挿入されます。(デフォルトのlsofディストリビューションでは、ホームディレクトリの直後に配置されます。)

たとえば、LSOFPERSDCPATHに``LSOF``が含まれ、ホームディレクトリが``/Homes/abe``、ホスト名が``lsof.itap.purdue.edu``、HASPERSDCフォーマットがデフォルト(``%h/%p.lsof_%L``)の場合、変更されたパーソナルデバイスキャッシュファイルのパスは次のようになります。

/Homes/abe/LSOF/.lsof_vic

LSOFPERSDCPATH環境変数は、lsofプロセスがsetuid-rootであるか、プロセスの実際のUIDがrootである場合は無視されます。

lsofプロセスがsetgid権限を放棄しない場合、lsofは変更されたパーソナルデバイスキャッシュファイルのパスに書き込みません。(デバイスキャッシュファイルへのアクセスに影響を与えるlsofの権限のリストについては、LSOF PERMISSIONS THAT AFFECT DEVICE CACHE FILE ACCESSセクションを参照してください。)

たとえば、LSOFPERSDCPATH環境変数を使用して、パーソナルデバイスキャッシュファイルのパスのサブディレクトリを作成し、lsofがsetgid権限を放棄しない場合は、lsofが標準のパーソナルパスにデバイスキャッシュファイルを作成できるようにし、シェルコマンドでサブディレクトリに移動する必要があります。

ローカルシステム管理者は、lsofが構築されたときにこのオプションを無効にしたり、環境変数の名前をLSOFPERSDCPATHから別の名前に変更したり、HASPERSDCフォーマットを変更して、パーソナルパスコンポーネントを別の場所に含めるか、完全に除外することができます。-D?オプションの出力で、環境変数の名前とHASPERSDCフォーマット仕様を確認してください。

診断

エラーは、標準エラーファイルにメッセージとして識別されます。

lsofは、コマンド名、ファイル名、インターネットアドレスまたはファイル、ログイン名、NFSファイル、PID、PGID、またはUIDをリストするように要求された場合に、エラーが発生した場合、1を返します。-Vオプションが指定されている場合、lsofはリストできなかった検索項目を示します。-Qオプションが指定されている場合、lsofは検索項目の失敗を無視し、通常ではない回復不能な問題が発生した場合にのみエラーを返します。


エラーが検出されなかった場合、または -Q オプションが指定された場合、または指定された検索引数のいずれかに関する情報をリスト表示できた場合に、0 を返します。

^ sof/dev (または /devices) またはそのサブディレクトリへのアクセスを開くことができない場合、またはそれらのファイルに対して stat(2) を使用して情報を取得できない場合、警告メッセージを発行して続行します。lsof/dev (または /devices) 内のアクセスできないファイルについて警告メッセージを発行することは、そのヘルプ出力(-h または >B -? オプションで要求)で、次のメッセージで示されます。

^ dev へのアクセス不可能な警告が有効になっています。

警告メッセージは、-w オプションで抑制できます。また、システム管理者が lsof のコンパイル時に WARNDEVACCESS の定義を設定することで、システム管理者によって抑制されている場合もあります。この場合、ヘルプ出力には次のメッセージが含まれます。

^ dev へのアクセス不可能な警告は無効になっています。

アクセス不可能なデバイスの警告メッセージは、通常、lsof が動作するデバイスキャッシュファイルを作成した後で消えます。

より広範なセットの例については、より詳細に記述された 00QUICKSTART ファイルを参照してください。

すべての開いているファイルをリストするには、次を使用します。

    lsof

すべての開いているインターネット、X.25 (HP-UX)、および UNIX ドメインファイルをリストするには、次を使用します。

    lsof -i -U

PID が 1234 のプロセスで使用されているすべての開いている IPv4 ネットワークファイルをリストするには、次を使用します。

    lsof -i 4 -a -p 1234

PID 1234 が存在しない場合、または PID 1234 に開いている IPv4 ネットワークファイルがない場合でも問題ない場合は、-Q を追加します。

    lsof -Q -i 4 -a -p 1234

UNIX のバージョンが IPv6 をサポートしていると仮定して、開いている IPv6 ネットワークファイルのみをリストするには、次を使用します。

    lsof -i 6

ホスト wonderland.cc.purdue.edu のポート 513、514、または 515 で任意のプロトコルを使用しているすべてのファイルをリストするには、次を使用します。

    lsof -i @wonderland.cc.purdue.edu:513-515

^ ace.cc.purdue.edu (cc.purdue.edu はデフォルトのドメインです) の任意のポートで任意のプロトコルを使用しているすべてのファイルをリストするには、次を使用します。

    lsof -i @mace

ログイン名 \`abe''`、ユーザー ID 1234、プロセス 456、プロセス 123、またはプロセス 789 のいずれかの開いているファイルをリストするには、次を使用します。

    lsof -p 456,123,789 -u 1234,abe

デバイス /dev/hd4 のすべての開いているファイルをリストするには、次を使用します。

    lsof /dev/hd4

^ u/abe/foo が開いているプロセスを、開いているファイルがない場合でも心配せずに検索するには、次を使用します。

    lsof -Q /u/abe/foo

プロセスが /u/abe/foo を開いている場合にのみアクションを実行するには、次を使用します。

    lsof /u/abe/foo  echo "still in use"

^ u/abe/bar を開いているプロセスに SIGHUP を送信するには、次を使用します。

    kill -HUP `lsof -t /u/abe/bar`

^ dev/log という名前の開いている UNIX ドメインソケットファイルを含む、開いているファイルを検索するには、次を使用します。

    lsof /dev/log

NFS ファイルシステム /nfs/mount/point に開いているファイルがあるプロセスを検索し、サーバーにアクセスできないと仮定し、マウントテーブルに /nfs/mount/point のデバイス番号が提供されていると仮定します。


lsof -b /nfs/mount/point

上記検索を警告メッセージなしで実行するには、次のようにします。

lsof -bw /nfs/mount/point

デバイスキャッシュファイルを無視するには、次のようにします。

lsof -Di

各プロセスの PID とコマンド名フィールド、各ファイルのファイル記述子、ファイルデバイス番号、ファイル inode 番号を出力するには、次のようにします。

lsof -FpcfDi

^ sof コマンドを実行しているすべてのプロセスの記述子 1 と 3 のファイル、ログイン ID abe を持ち、10 秒ごとに繰り返すには、次のようにします。

lsof -c lsof -a -d 1 -d 3 -u abe -r10

コマンドが正確に 4 文字で、3 文字目に 'o' または 'O' が含まれているプロセスの現在の作業ディレクトリをリストするには、-c オプションの次の正規表現を使用します。

lsof -c /^..o.$/i -a -d cwd

IP バージョン 4 ソケットファイルを、関連する数値のドット区切り形式のアドレスで検索するには、次のようにします。

lsof [email protected]

IP バージョン 6 ソケットファイル(UNIX ダイアレクトが IPv6 をサポートしている場合)を、関連する数値のコロン区切り形式のアドレスで検索するには、次のようにします。

lsof -i@[0:1:2:3:4:5:6:7]

IP バージョン 6 ソケットファイル(UNIX ダイアレクトが IPv6 をサポートしている場合)を、関連する数値のコロン区切り形式のアドレスで検索し、ゼロが連続する部分(ループバックアドレスなど)を含めるには、次のようにします。

lsof -i@[::1]

現在の時間を含む、繰り返しモードのマーカー行を取得するには、次のようにします。

lsof -rm====%T====

前のマーカー行にスペースを追加するには、次のようにします。

lsof -r "m==== %T ===="

バグ

^ sof はカーネルメモリを読み込んで開いているファイルを検索するため、カーネルメモリの急速な変更により、予測不可能な結果が生じる可能性があります。

ファイルに複数のレコードロックがある場合、ロック状態の文字(ファイル記述子の後)は、個々のレコードロックの組み合わせではなく、最初のロック構造のテストから導き出されます。

^ sof は、ルート set-UID 権限でインストールされていない限り、名前でアクセス制限の厳しいファイルを検索できません。そうでない場合、アクセス権を持つユーザーまたはセットされた GID グループ(存在する場合)のファイルのみを検索できます。

raw ソケット(ping など)の宛先アドレスの表示は、UNIX オペレーティングシステムによって異なります。一部のダイアレクトは宛先アドレスを raw ソケットのプロトコル制御ブロックに格納しますが、一部はそうしません。

^ sof は、Solaris のデバイス番号を ls と同じように表示できません。たとえば、CD-ROM ファイルがマウントされているディレクトリ(通常は /cdrom)について lstat(2) 関数と stat(2) 関数が報告するメジャーデバイス番号とマイナーデバイス番号は、CD-ROM ファイルがマウントされているデバイス(通常は /dev/sr0)について報告する番号と同じではありません。(lsof はディレクトリ番号を報告します。)

^ proc ファイルシステムへのサポートは、BSD および Tru64 UNIX ダイアレクト、Linux、および SYSV R4 から派生したダイアレクト(FreeBSD、NetBSD、OpenBSD、Solaris、UnixWare など)でのみ利用できます。

一部の /proc ファイルアイテム(デバイス番号、inode 番号、ファイルサイズ)は、一部のダイアレクトでは利用できません。/proc ファイルシステム内のファイルを検索するには、完全なパス名を指定する必要があります。


Linux プロセスでは、テキスト (.txt) ファイル記述子は表示されません。現在の作業ディレクトリ、ルートディレクトリ、および数値ファイル記述子以外のすべてのファイルエントリは、「mem 記述子」とラベル付けされます。

lsof は、Tru64 UNIX の名前付きパイプを名前で検索できません。これは、そのカーネルの lstat(2) の実装が、名前付きパイプに対して不適切なデバイス番号を返すためです。

lsof は、HP-UX 9.01、10.20、および 11.00 のロックを完全に、または正しく報告できません。これは、カーネルデータへのアクセスが不十分であるか、カーネルデータにエラーがあるためです。詳細は、lsof FAQ (FAQ セクションで場所が示されています) を参照してください。

AIX SMT ファイルタイプは、でたらめです。これは、/usr/include/sys/file.h ヘッダーファイルで定義されていないタイプ (15) を持つファイル構造のために作成されます。そのようなファイル構造を作成する 1 つの方法は、DISPLAY 変数を ``:0.0'' に設定して X クライアントを実行することです。

+|-f[cfn] オプションは、/proc ベースの Linux lsof ではサポートされていません。これは、カーネルメモリからカーネル構造を読み込まないためです。

環境

lsof は、これらの環境変数にアクセスする可能性があります。

LANG              言語ロケールを定義します。setlocale(3) を参照して、LANG の代わりに 사용할 수 있는 다른 변수의 이름(예: LC_ALL, LC_TYPE 등)을 확인하세요.

LSOFDEVCACHE      デバイスキャッシュファイルのパスを定義します。DEVICE CACHE PATH FROM AN ENVIRONMENT VARIABLE セクションを参照して、詳細を確認してください。

LSOFPERSDCPATH    変更されたパーソナルデバイスキャッシュファイルパスのミドルコンポーネントを定義します。MODIFIED PERSONAL DEVICE CACHE PATH セクションを参照して、詳細を確認してください。

FAQ

よくある質問とその回答 (FAQ) は、lsof ディストリビューションの 00FAQ ファイルで確認できます。

最新バージョンは、次の場所にあります。

https://github.com/lsof-org/lsof/blob/master/00FAQ

ファイル

/dev/kmem         カーネル仮想メモリデバイス

/dev/mem          物理メモリデバイス

/dev/swap         システムページングデバイス

.lsof_hostname    lsof のデバイスキャッシュファイル (サフィックスは、gethostname(2) によって返されるホスト名の最初のコンポーネントです)。

著者

lsof は、パーデュー大学の Victor A. Abell によって作成されました。バージョン 4.93.0 以降、GitHub の lsof-org チームが lsof を維持しています。他の多くの人が lsof に貢献しています。彼らは、lsof ディストリビューションの 00CREDITS ファイルにリストされています。

配布

lsof の最新のディストリビューションは、次の場所で入手できます。

https://github.com/lsof-org/lsof/releases

関連項目

次のマニュアルページはすべて、lsof が移植されたすべての UNIX 方言に存在するわけではありません。

access(2), awk(1), crash(1), fattach(3C), ff(1), fstat(8), fuser(1), gethostname(2), isprint(3), kill(1), localtime(3), lstat(2), modload(8), mount(8), netstat(1), ofiles(8L), open(2), perl(1), ps(1), readlink(2), setlocale(3), stat(2), strftime(3), time(2), uname(1).