Lsofに物理ファイルのみ(ソケットではなく、TCP/IP接続ではなく、物理ファイルのみ)をリストする必要があることをどのように伝えるのですか?
いくつかのmanページを調べたところ、次のコマンドを使用しているようです:
Sudo lsof /
これにより、/ディレクトリで開いているすべてのファイルが一覧表示されます。これは、Linuxファイルシステム上のすべてです。テストしただけで、REGとDIRのみが表示されます。
その他の例:
lsof -a -d 0-999 -c <command name> /
lsof -a -d 0-999 -p <pid> /
0-999は、ファイル記述子番号を持つファイルに制限します。
スイッチがあるかもしれませんが、grepでフィルターすることを気にしない場合は、Sudo lsof | egrep 'REG|DIR'
、「物理ファイル」とは、通常のファイルとディレクトリを意味します。
マニュアルページのOUTPUT :: TYPEセクションを参照してくださいman lsof
その列にある可能性のあるすべてのタイプ。
これは私が完璧に機能した私がしたことです:
lsof -F n -p 12501 | grep ^n/ | cut -c2- | sort -u
lsof
の-F n
オプションを使用すると、開いているファイルのnamesのみが出力されます。開いているファイルの名前を含む各出力行は、単一文字nで始まり、直後にnameが続きます。 Regular filesは常に、絶対的な完全修飾ファイル名になります。 grep ^n/
は、/
で始まる名前の行のみを選択します(絶対的な完全修飾ファイル名を意味します)。したがって、開いているポート、ソケット、パイプ(FIFOなど)などを削除します。cut -c2-
は最初の文字n
を削除し、ファイル名のみを残します。最後に、sort -u
は重複するエントリを削除します。
注意点の1つは、ファイル名が/
で始まる限り、regularではないファイルが含まれます。たとえば、次で始まるすべてのファイルが含まれます。
また、お使いのOSによっては他にもある場合があります。