Не мог использовать “определяют местоположение” команды для нахождения файла созданным в моем корневом каталоге

Я плохо знаком с Linux. И я просто исследую терминал.

  1. Я создал файл touch Desktop/vvv.
  2. Теперь я обновил использование базы данных sudo updatedb.
  3. Команда 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$
2
задан 3 June 2017 в 19:09

2 ответа

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

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

Следовательно, из соображений конфиденциальности по умолчанию updatedb не сканирует каталоги, которые не доступны для чтения каждому пользователю. Если вы не предоставите другим пользователям доступ на чтение к вашему домашнему каталогу (это по умолчанию в большинстве дистрибутивов), это может привести к нарушению конфиденциальности, но другие пользователи могут получить список ваших файлов через updatedb / locate.

Для размещения файлов в вашем домашнем каталоге или в любом месте, где необходимо отражать недавние изменения, вам следует рассмотреть возможность использования find или других утилит, которые сканируют файловую систему именно тогда, когда вам это нужно.

1
ответ дан 2 December 2019 в 02:46

Значением по умолчанию 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"
2
ответ дан 2 December 2019 в 02:46

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

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