lsofが常に開いているファイルの解決された絶対パス名を表示するかどうか

lsofが常に開いているファイルの解決された絶対パス名を表示するかどうか

の出力では、lsofこの列は常に開かれたファイルの解決された絶対パス名を出力しますかNAME...

たとえば、cdディレクトリへのシンボリックリンクに移動し、プログラムを実行してそのディレクトリの下のファイルを開くと、ファイルの解決された絶対パス名のみがlsof表示されますか?

開いたファイルの未解決の絶対パス名を出力できますかlsof?解決されていないということは、ディレクトリシンボリックリンクがパス名になければならないことを意味します。

ありがとうございます。

ベストアンサー1

オプションがない場合は、解析された形式でパス名を指定する必要があります。 ~からlsof(8) マニュアル:

開くファイルは、汎用ファイル、ディレクトリ、ブロック特殊ファイル、文字特殊ファイル、実行可能テキスト参照、ライブラリ、ストリーム、またはネットワークファイル(インターネットソケット、NFSファイル、またはUNIXドメインソケット)です。パスごとにファイルを選択するか、ファイルシステム内のすべてのファイルを選択できます。

もちろん、次のエラーがある可能性があります。パス名が長すぎます。、この場合、パス名は解析されませんが、明らかに次のlsofように異なります。周囲のラッパー機能readlink()、その仕事をしなければなりません。

次のようにファイル名を指定する場合lsof [options] [--] names:

名前リストする特定のファイルのパス名。シンボリックリンクは使用前に解決されます。 「--」オプションを使用して、以前のオプションと名前を区別できます。

もちろん、ファイル名の解析に標準的な規則が適用されます。シンボリックリンクレベルが多すぎます。エラーが発生しましたlsofMAXSYMLINKS変数によって異なる Linuxカーネルで最大40個のシンボリックリンクでハードコーディング変数が定義されていない他のシステムの場合は、-32に設定してください。

-bオプションを指定すると、ファイル名は解析されません。

第三に、lsofがシステムマウントテーブルから取得したファイルシステムディレクトリ名がシンボリックリンクである場合、lsofはこれらのリンクを解決できません。これは、-bオプションを使用すると、lsofがシンボリックリンクの解決に使用するカーネルreadlink(2)関数の使用を防止するためです。

おすすめ記事