Google Chromeのダウンロードを含むディレクトリを監視しており、ls -la
出力に次のものが表示されます。
-????????? ? ? ? ? ? 'Unconfirmed 784300.crdownload'
出力でそのような疑問符を見たことはありません。
ディレクトリには、一般的なメタデータ出力を含む他のファイルがあります。再実行すると、ls -la
出力はすべて正常です。ファイル名はまだ同じですが、メタデータが表示されます。後でダウンロードが完了すると、ファイル名が期待どおりに最終名に変更されます。
/var/log/syslog
出力を確認しましたが、dmesg
カーネルメッセージが表示されませんでした。
どのような競争条件に直面しているのだろうか。ファイルが最初に作成された後、まだ情報が利用できない短い時間があるかどうか疑問に思います。
標準マウントオプション(rw、relatime、エラー=remount-ro)を持つext4ファイルシステム、Ubuntu 20.04.1 LTSの5.4.0-59汎用カーネル
答え1
ls
これは、ディレクトリエントリを読み取り、そのinodeからメタデータをインポートする間に消える(一時?)ファイルです。
ls
ファイルを呼び出す前にファイルを停止し、lstat
ファイルを削除してから実行を続けることで、状況を再現できます。
$ mkdir dir; touch dir/file
$ gdb -q ls
Reading symbols from ls...(no debugging symbols found)...done.
(gdb) br __lxstat
Breakpoint 1 at 0x4200
(gdb) r -l dir
...
Breakpoint 1, __GI___lxstat (vers=1, name=0x7fffffffdfca "dir",
buf=0x55555557c538) at ../sysdeps/unix/sysv/linux/wordsize-64/lxstat.c:34
(gdb) c
...
Breakpoint 1, __GI___lxstat (vers=1, name=0x7fffffffd3f0 "dir/file",
buf=0x55555557c538) at ../sysdeps/unix/sysv/linux/wordsize-64/lxstat.c:34
...
(gdb) shell rm dir/file
(gdb) c
...
/usr/bin/ls: cannot access 'dir/file': No such file or directory
total 0
-????????? ? ? ? ? ? file
どのような競争条件にぶつかったのだろうか?
ある種のようなようですが、実際にはそうではありません。ls
タスクの実行中にファイルシステムがロックされていないのは事実です;-)
とにかくこれはいいえファイルシステムの破損または同様の症状。