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