Я плохо знаком с Linux. И я просто исследую терминал.
touch Desktop/vvv
.sudo updatedb
.locate vvv
не делает шоу никакой результат. В то время как это просто хорошо работает с find / -name vvv
.Я нашел, что это - это locate
кажется, не ищет в моем корневом каталоге, поскольку он показывает результаты usr
, var
, slib
, opt
, и т.д. каталоги.
Почему я говорю, что это вызвано тем, что, когда я пытаюсь locate
некоторый случайный файл как complete
который находится в каталоге Download (который является не совсем уникальным именем), он покажет результаты других каталогов, но не Загрузки.
Обновление: Для демонстрации этого я скопировал это с терминала:
aditya@ubuntu16:~$ cd /usr/
aditya@ubuntu16:/usr$ ls
bin games include lib local locale sbin share src
aditya@ubuntu16:/usr$ sudo touch aaaa
[sudo] password for aditya:
aditya@ubuntu16:/usr$ ls
aaaa bin games include lib local locale sbin share src
aditya@ubuntu16:/usr$ sudo updatedb
aditya@ubuntu16:/usr$ locate aaaa
/usr/aaaa
/var/cache/fontconfig/0bd3dc0958fa2205aaaa8ebb13e2872b-le64.cache-6
aditya@ubuntu16:/usr$ cd ../home/aditya/Desktop/
aditya@ubuntu16:~/Desktop$ touch aaaa
aditya@ubuntu16:~/Desktop$ updatedb
updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db'
aditya@ubuntu16:~/Desktop$ sudo updatedb
sudo: unable to resolve host ubuntu16
aditya@ubuntu16:~/Desktop$ locate aaa
/usr/aaaa
/usr/share/app-install/desktop/jaaa:jaaa-alsa.desktop
/var/cache/fontconfig/0bd3dc0958fa2205aaaa8ebb13e2872b-le64.cache-6
/var/cache/fontconfig/bab58bb527bb656aaa9f116d68a48d89-le64.cache-6
aditya@ubuntu16:~/Desktop$
updatedb
сканирует всю вашу файловую систему, и, как таковая, это довольно дорогая операция. Он не предназначен для запуска после каждого создания файла, скорее один раз в день, чтобы дать вам общее представление о системных файлах.
Как вы можете видеть, запустив sudo
, он не создает и не обновляет базу данных для каждого пользователя, он создает или обновляет общую глобальную базу данных, содержащую манифест всей вашей системы. Ваша система имеет (или потенциально может иметь) нескольких пользователей, каждый из которых имеет доступ для чтения к базе данных.
Следовательно, из соображений конфиденциальности по умолчанию updatedb
не сканирует каталоги, которые не доступны для чтения каждому пользователю. Если вы не предоставите другим пользователям доступ на чтение к вашему домашнему каталогу (это по умолчанию в большинстве дистрибутивов), это может привести к нарушению конфиденциальности, но другие пользователи могут получить список ваших файлов через updatedb
/ locate
.
Для размещения файлов в вашем домашнем каталоге или в любом месте, где необходимо отражать недавние изменения, вам следует рассмотреть возможность использования find
или других утилит, которые сканируют файловую систему именно тогда, когда вам это нужно.
Значением по умолчанию find
поиски Вашего определенного шаблона во всех файлах и подкаталогах, которые Вы указали в реальное время, поэтому даже после того, как поиск был запущен, можно создать новый файл где-нибудь и если find
еще не искал то место, это найдет что файл для Вас.
, с другой стороны, как Вы знаете, располагаются, использует кэшируемую базу данных для ускорения этого процесса, однако это только кэши некоторые определенные каталоги, можно использовать /etc/updatedb.conf
файл для определения некоторых каталогов, которые будут исключены из того, чтобы быть кэшируемым.
обновление данных с sudo
на машине с многочисленными пользователями является причиной угрозы безопасности, мы закончим к базе данных, которая содержит все пользовательские данные, и все могут искать его.
Для меня sudo updatedb
хорошо работает, так проверка /etc/updatedb.conf
, чтобы видеть, было ли что-нибудь исключено в Вашей машине.
, Если Вы хотите создать базу данных только для Вашего пользователя, можно использовать:
updatedb -l 0 --output=/home/username/.mydb.db
затем для поиска скручивания жгутов это использует:
locate -d ~/.mydb.db search-pattern
И использование искажает для создания этого большим удобством:
alias lupdatedb="updatedb -l 0 --output=/home/username/.mydb.db"
alias llocate="locate -d ~/.mydb.db"