Каким образом определять местоположение команда не находит очевидные файлы?

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

$ 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

Почему был, располагаются не могущий найти этот файл?

6
задан 7 September 2014 в 01:02

4 ответа

updatedb только выполнения один раз в день, необходимо выполнить его с полномочиями пользователя root найти недавние файлы.

10
ответ дан 17 November 2019 в 04:44

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

  1. Файл (каталог) был создан после того, как прошлый раз, когда база данных располагается, был обновлен. По умолчанию это обновляется однажды за день (/etc/cron.daily/mlocate).
    С достаточным полномочием можно зафиксировать его вызывающий обновление с

    sudo updatedb
    
  2. Файл (каталог) был создан под путем, не просканированным 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 имеет трудно кодированный путь (где искать), так может не всегда находить то, что Вы ищете.

4
ответ дан 17 November 2019 в 04:44

Я был несколько ленив и не хотел запускать sudo updatedb , и, поскольку у меня есть компьютер, который может работать на меня, он запускает sudo updatedb каждые 15 минут, так что мне не нужно.

Используйте sudo crontab -e и найдите эту строку:

# m h  dom mon dow   command

вставьте под ней:

*/15 *  *   *   *     /usr/bin/updatedb

Затем нажмите Ctrl + O , чтобы сохранить файл. (напишите O ut), а затем Ctrl + X на e X it.

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

sudo updatedb

... чтобы вручную обновить индексы, используемые командой locate .

0
ответ дан 20 December 2019 в 01:38

Мое решение было очень быстро (но, возможно, не оптимально, так как ваша команда sudo updatedb займет больше времени). Однако вы больше не пропустите ни один файл, даже если у вас несколько разделов (мне это удобно).

Я открыл файл конфигурации updated (вам нужны права sudo для сохранения следующего файла):

nano /etc/updatedb.conf

Затем я прокомментировал (добавляя # в начале строки) все строки, начинающиеся с: PRUNENAMES PRUNEPATHS PRUNEFS

Сохраните файл (CTRL+O, ENTER, CTRL+X).

Надеюсь, это поможет кому-то еще.

0
ответ дан 13 May 2020 в 16:13

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

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