Назад | Перейти на главную страницу

Можете ли вы кэшировать команду «найти»?

Я написал простой сценарий оболочки, который использует команду «найти», поэтому пользователи, не обладающие техническими знаниями, могут выполнять поиск на файловом сервере через веб-браузер в локальной сети. Это работает, но иногда на выполнение требуется много времени, а затем последующий поиск выполняется быстро.

Есть ли способ принудительно кэшировать для «поиска» или, возможно, запускать что-то в CRON, чтобы делать это ежедневно или несколько раз в день, чтобы пользователям не приходилось так долго ждать, чтобы получить свои первые результаты?

В locate Команда предназначена для того, чтобы делать именно то, что вы хотите. Программный пакет включает (обычно ежедневное) задание cron, которое создает базу данных существующих файлов, а затем locate команда будет использовать эту базу данных для поиска файлов, а не для обхода дерева файловой системы.

Ваш дистрибутив Linux может даже предложить вам несколько реализаций locate: в дополнение к реализации, включенной в GNU findutils, могут быть более новые реализации slocate и / или mlocate.

  • Обе slocate и mlocate отфильтрует любые результаты поиска, к которым пользователь, выполняющий поиск, не сможет получить доступ, в соответствии с правами доступа к файлам и каталогам.

  • mlocate также ускорит обновление базы данных, обнаружив, какие каталоги не изменились после предыдущего обновления базы данных.

Ответ, предоставленный @telcoM, вероятно, является правильным, которому вы должны следовать. Однако около десяти лет назад у меня однажды не было другого выбора, кроме как сохранить все дерево каталогов в кэше.

Тогда моим решением было поставить что-то вроде

*/5 * * * * /usr/bin/find / 2>&1 >/dev/null

в мой cron, поэтому дерево каталогов очень часто сканировалось и оставалось кешированным.