削除されたファイルはまだ使用中です: memfd:pulseaudio(pulsaudi), memfd:xshmfence(Xorg), /tmp/ib...(mysqld)

削除されたファイルはまだ使用中です: memfd:pulseaudio(pulsaudi), memfd:xshmfence(Xorg), /tmp/ib...(mysqld)

そのため、KDEを使用してDebian 9.1を新しくインストールしていますが、一部のツールはこれらのファイルが削除されたがまだ使用されていることを示しています。

  • memfd:パルスオーディオ(パルサウディ)
  • memfd:xshmfence(Xorg)
  • /tmp/ibAbCdEf(mysqld)
  • [上記に/tmp/sが4つあります]

これは新しくインストールされたもので、これまではどのパッケージもダウンロードしておらず、いくつかのマイナーな構成のみをダウンロードしました。なぜ削除されましたが、それでも使用されますか?完全に削除できますか?これは壊れた部分がありますか?他の人もこんなものを持っていますか?削除または削除する必要がある場合:どのように?

関連する以前の質問:「ディスクから削除されたがファイルハンドルが閉じられていないDebianでファイルを見つけて削除する方法は?」

答え1

削除されたファイル名にファイルハンドルを使用することは、正当なファイルアクセス方法です。これは、ファイルハンドルでのみ開くファイルに(簡単に)アクセスしたり対話したりするのを防ぐのに役立ちます。ただし、これらの一時ファイルを生成するコードを理解しないと、このユースケースをoops-deleted-but-openのバグと区別することはできません。つまり、削除されたが開いているファイルは完全に正当である可能性があります。

真珠ファイル::一時ファイルたとえば、モジュールは一時ファイルのリンクを解除します。基本的にファイル名ではなくファイルハンドルのみを要求する場合:

$ perl -MFile::Temp=tempfile -e 'my$fh=tempfile("qqqqXXXXXXXXXX");sleep 999' &
[1] 67001
$ lsof | grep qqqq
perl5.24 67001 jdoe 3u REG 1,2 0 65834304 /Users/jdoe/qqqq4mnuKXT3fS
$ file /Users/jdoe/qqqq4mnuKXT3fS
/Users/jdoe/qqqq4mnuKXT3fS: cannot open `/Users/jdoe/qqqq4mnuKXT3fS' (No such file or directory)
$ fg
perl -MFile::Temp=tempfi
^C
$

これでファイル名を要求した後、ファイルは自動的に切断されません。

$ perl -MFile::Temp=tempfile -e 'my($fh,$name)=tempfile("qqqqXXXXXXXXXX");sleep 999' &
[1] 67012
$ lsof | grep qqqq
perl5.24 67012 jdoe 3u REG 1,2 0 65834307 /Users/jdoe/qqqqEvy9FFVnLQ
$ file /Users/jdoe/qqqqEvy9FFVnLQ
/Users/jdoe/qqqqEvy9FFVnLQ: empty
$ 

関連情報