Я написал простой сценарий оболочки, который использует команду «найти», поэтому пользователи, не обладающие техническими знаниями, могут выполнять поиск на файловом сервере через веб-браузер в локальной сети. Это работает, но иногда на выполнение требуется много времени, а затем последующий поиск выполняется быстро.
Есть ли способ принудительно кэшировать для «поиска» или, возможно, запускать что-то в CRON, чтобы делать это ежедневно или несколько раз в день, чтобы пользователям не приходилось так долго ждать, чтобы получить свои первые результаты?
В locate
Команда предназначена для того, чтобы делать именно то, что вы хотите. Программный пакет включает (обычно ежедневное) задание cron, которое создает базу данных существующих файлов, а затем locate
команда будет использовать эту базу данных для поиска файлов, а не для обхода дерева файловой системы.
Ваш дистрибутив Linux может даже предложить вам несколько реализаций locate
: в дополнение к реализации, включенной в GNU findutils
, могут быть более новые реализации slocate
и / или mlocate
.
Обе slocate
и mlocate
отфильтрует любые результаты поиска, к которым пользователь, выполняющий поиск, не сможет получить доступ, в соответствии с правами доступа к файлам и каталогам.
mlocate
также ускорит обновление базы данных, обнаружив, какие каталоги не изменились после предыдущего обновления базы данных.
Ответ, предоставленный @telcoM, вероятно, является правильным, которому вы должны следовать. Однако около десяти лет назад у меня однажды не было другого выбора, кроме как сохранить все дерево каталогов в кэше.
Тогда моим решением было поставить что-то вроде
*/5 * * * * /usr/bin/find / 2>&1 >/dev/null
в мой cron, поэтому дерево каталогов очень часто сканировалось и оставалось кешированным.