web-dev-qa-db-ja.com

「locate」コマンドでファイルが表示されますが、存在しません。どうして?

奇妙な問題が発生しています。
現在、Backtrack 5(Ubuntuベース)のフラッシュインストールを修正しています。私は本当にフラッシュを動作させる必要があるので、私はグーグルで調べました。あるボードでは、このディストリビューション(最終的にはDebianに基づいています)では、フラッシュはiceweasel-flashpluginにインストールされるため、そこへのパスをiceweaselからfirefoxに変更する必要があるとある人が言いました。 (または、Firefoxにプラグインを探すように指示します。よくわかりません)。

しかし、ここで奇妙な部分があります。 Locateコマンドを使用すると、ファイルとそのパスが見つかります。この正確なパスでcatコマンドを実行すると、「ファイルまたはディレクトリがありません」。ls-laを使用しても、何も起こりません。 i'sで始まる2つのファイルしかありません。

なぜこれが起こっているのか誰かが知っていますか?そして、このフラッシュインストールを修正する方法はありますか?
事前にどうもありがとうございました。
Shell screenshot

14
PatrickCUDO

locateは、locatedbというデータベースを使用します。通常、システムのcronジョブによって更新されます。 DBが更新されていない場合は、存在しないか新しいファイル/ディレクトリが表示されます。 updatedbコマンドで強制的に更新できます。とりわけ このリンク を参照してください。

locateのマンページは明確に言っています-

   locate  reads  one or more databases prepared by updatedb and writes
   file names matching at least one of the PATTERNs  to  standard  output,
   one per line.

   By default, locate does not check whether files found in database still
   exist;  locate  can  never  report  files created after the most recent
   update of the relevant database.

ソース

15
Bibhas

locateは、通常cronを介して1日に1回更新されるデータベースに基づいています。更新を強制します。updatedbを実行すると、locate iceweaselが最新の結果を返します。

4
Olivier S