52613


Debian GNU/Linux 9にてとあるディレクトリで「ls」するとパーミッションが「???」となります。

[code]

    drwxrwxrwx 2 nobody nogroup 131072 Feb  6 15:24 ..
    -????????? ? ?      ?            ?            ? esparse
    -????????? ? ?      ?            ?            ? esvalidate
    
[/code]

このファイルを削除しようとすると「No such file or directory」と表示されます。

[code]

    rm: cannot remove 'esparse': No such file or directory
    
[/code]

chmodでも同様です。

原因がわからないのでご教授お願いします。


CC BY-SA 4.0
2019-02-07T01:45:02.853
52611
2021-02-20T15:22:17.763
2021-02-20T15:22:17.763
3060
24385
question
linux debian
ls でクエスチョンマークが表示された場合の対処法を教えてください。


`とあるディレクトリ` に読み取り権限はあるものの実行権限が無いのが原因かと考えられます。

`chmod a+x そのディレクトリ` など（必要に応じて `sudo` を付けつつ）してみてください。


CC BY-SA 4.0
2019-02-07T01:56:06.227
52613
2019-02-07T01:56:06.227
29826
52611
answer


私も似たようなことが発生しました。  
ファイルを元に戻すことはできませんでしたが、削除はすることができたのでその対応内容を共有させていただきます。  
環境はCentOS7です。

[code]

    $ cd /var/backup/hoge/.git/objects
    $ ls -l c7
    ls: c7/84918c2ca3792f813cc97f824280f13dabbd4a にアクセスできません: そのようなファイルやディレクトリはありません
    合計 0
    l????????? ? ? ? ?                ? 84918c2ca3792f813cc97f824280f13dabbd4a
    
[/code]

`rm`や`chmod`はできず、`vim`などで同名のファイルを作成すると「???」が消えてパーミッションが表示されますが、その状態でそのファイルを`rm`するとまた元の状態に戻ってしまいました。  
また、ディレクトリごと`rm`しようとしても、このファイルの存在によって失敗していました。

そこで`lsof`コマンドで確認したところ、ファイルの置かれているディレクトリが使用中でした。  
そのプロセスを`kill`した後で`rm`すると、削除に成功しました。

[code]

    $ lsof | grep hoge
    fish      2134               admin  cwd       DIR              253,0        28 17312608 /var/backup/hoge/.git/objects
    fish      2134               admin    3r      DIR              253,0        28 17312608 /var/backup/hoge/.git/objects
    fish      2134 5996          admin  cwd       DIR              253,0        28 17312608 /var/backup/hoge/.git/objects
    fish      2134 5996          admin    3r      DIR              253,0        28 17312608 /var/backup/hoge/.git/objects
    lsof      6001               admin  cwd       DIR              253,0        28 17312608 /var/backup/hoge/.git/objects
    grep      6002               admin  cwd       DIR              253,0        28 17312608 /var/backup/hoge/.git/objects
    lsof      6003               admin  cwd       DIR              253,0        28 17312608 /var/backup/hoge/.git/objects
    
    $ kill 2134
    $ rm -rf /var/backup/hoge
    
[/code]

結局なぜ「???」になっていたのか、そしてどうしてこれで削除できるようになったのかは私は分かっておらず恐縮ですが、解決のための何らかの糸口になりましたら幸いです。


CC BY-SA 4.0
2021-02-20T13:06:12.910
74158
2021-02-20T13:06:12.910
44047
52611
answer