ls 메타데이터 출력에 물음표가 있습니까?

ls 메타데이터 출력에 물음표가 있습니까?

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작업을 수행하는 동안 파일 시스템이 잠겨 있지 않다는 것은 사실입니다 ;-)

아무튼 이건아니요파일 시스템 손상 또는 유사한 증상.

관련 정보