Почему команда locate не находит очевидных файлов?

Команда локации звучит интуитивно. Я бы ожидал, что он найдет файлы в файловой системе. Тем не менее, он редко находит файлы в системе, которые действительно присутствуют:

$ 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

Почему локация не удалось найти этот файл?

1
задан 7 September 2014 в 02:02

1 ответ

Если вы не можете locate файла, который, очевидно, существует, я вижу только две возможности:

Файл (каталог) был создан после последнего обновления базы данных локации. По умолчанию он обновляется один раз в день (/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 имеет жестко закодированный путь (где искать), поэтому не всегда можно найти то, что вы ищете.

2
ответ дан 24 May 2018 в 03:55

Другие вопросы по тегам:

Похожие вопросы: