位置特定コマンドは直感的に聞こえます。私はそれがファイルシステム上のファイルを見つけることを期待しています。ただし、実際に存在するシステム上のファイルはほとんど見つかりません。
$ locate ipsec.secrets
ファイルシステムのルートディレクトリ/から実行した場合でも、結果は得られません。ファイルは確かに存在します:
$ whereis ipsec.secrets
ipsec: /usr/sbin/ipsec /etc/ipsec.secrets /etc/ipsec.d /etc/ipsec.conf /usr/lib/ipsec /usr/share/man/man8/ipsec.8.gz
なぜlocateはこのファイルを見つけることができなかったのですか?
updatedb
は1日に1回しか実行されません。最近のファイルを見つけるには、root権限で実行する必要があります。
明らかに存在するファイルをlocate
できない場合、2つの可能性しかありません:
ファイル(ディレクトリ)は、locateのデータベースが最後に更新された後に作成されました。デフォルトでは、1日に1回更新されます(/etc/cron.daily/mlocate
)。
十分な特権があれば、それを修正して強制的に更新することができます
Sudo updatedb
ファイル(ディレクトリ)は、updatedbによってスキャンされないパスの下に作成されました(よりまれなケース):構成内のプルーニングされたファイルのキーを見つけることができますファイル/etc/updatedb.conf
。 PRUNENAMES、PRUNEPATHS、またはPRUNEFSを検索して結果を変更し、データベースを再度更新します。
Sudo pico /etc/updatedb.conf
Sudo updatedb
もちろん、特権がなくてもファイルを検索できます。たとえば、次のような位置から始まるすべてのディレクトリとサブディレクトリをスキャンします。
find . -name '*ipsec.secrets*' # to start from the current directory
find / -name '*ipsec.secrets*' # to start from the root # long long
注whereis
にはハードコードされたパス(検索する場所)があるため、探しているものが常に見つかるとは限りません。