lsof:警告:stat()ヒューズ.gvfsd-fuseファイルシステムは利用できません。

lsof:警告:stat()ヒューズ.gvfsd-fuseファイルシステムは利用できません。

ここで何が起こっているのでしょうか?

root@bob-p7-1298c:/# ls -l /tmp/report.csv && lsof | grep "report.csv"
-rw-r--r-- 1 mysql mysql 1430 Dec  4 12:34 /tmp/report.csv
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.

ベストアンサー1

FUSEとそのアクセス権

lsofデフォルトでは、以下を含むマウントされたすべてのファイルシステムがチェックされます。ヒューズ- Linuxで特別なアクセス権を持つユーザースペースに実装されたファイルシステム。

あなたが見たようにAsk Ubuntuへの回答インストール済み重力加速度センサーファイルシステム(FUSEの特別な場合)は通常、それをインストールしたユーザー(所有者gvfsd-fuse)にのみアクセスできます。アクセスrootすら不可能です。この制限を上書きするには、インストールオプションとallow_rootを使用できますallow_other。このオプションは、このセクションで説明されているように、FUSEデーモンでも有効にする必要があります。回答...しかし、あなたの場合はアクセス権を変更する必要はなく、変更しないでください。

lsofからファイルシステムを除外

あなたの場合はlsofGVFSファイルシステムをチェックする必要はありませstat()-e

lsof -e /run/user/1000/gvfs

lsofでいくつかのファイルをチェックする

を使用してlsofシステムで実行されているすべてのプロセスに関する情報を取得し、フル出力フィルタリングを使用しますgrep。特定のファイルのみを確認し、そのプロセスがその値に-f直接従わずにオプションを使用する場合は、「オプションの終わり」区切り文字の後にファイルのリストを指定します--。はるかに速くなります。

lsof -e /run/user/1000/gvfs -f -- /tmp/report.csv

汎用ソリューション

失敗したマウントされたすべてのファイルシステムを除外するには、stat()次のコマンドを実行できます(からbash)。

x=(); for a in $(mount | cut -d' ' -f3); do test -e "$a" || x+=("-e$a"); done
lsof "${x[@]}" -f -- /tmp/report.csv

または、必ず以下を使用してくださいstat()test -eさまざまな方法で実装できます)。

x=(); for a in $(mount | cut -d' ' -f3); do stat --printf= "$a" 2>/dev/null || x+=("-e$a"); done

おすすめ記事