web-dev-qa-db-ja.com

lsof-出力を物理ファイルのみに制限-どのように?

Lsofに物理ファイルのみ(ソケットではなく、TCP/IP接続ではなく、物理ファイルのみ)をリストする必要があることをどのように伝えるのですか?

30

いくつかのmanページを調べたところ、次のコマンドを使用しているようです:

Sudo lsof /

これにより、/ディレクトリで開いているすべてのファイルが一覧表示されます。これは、Linuxファイルシステム上のすべてです。テストしただけで、REGとDIRのみが表示されます。

その他の例:

lsof -a -d 0-999 -c <command name> /
lsof -a -d 0-999 -p <pid> /

0-999は、ファイル記述子番号を持つファイルに制限します。

37
Dave Drager

スイッチがあるかもしれませんが、grepでフィルターすることを気にしない場合は、Sudo lsof | egrep 'REG|DIR'、「物理ファイル」とは、通常のファイルとディレクトリを意味します。

マニュアルページのOUTPUT :: TYPEセクションを参照してくださいman lsofその列にある可能性のあるすべてのタイプ。

9
Kyle Brandt

これは私が完璧に機能した私がしたことです:

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ではないファイルが含まれます。たとえば、次で始まるすべてのファイルが含まれます。

  • / dev
  • / proc
  • / sys

また、お使いのOSによっては他にもある場合があります。

2
Greg Barrett