Não é possível usar o comando “locate” para encontrar um arquivo criado no meu diretório pessoal

2

Sou novo no linux. E estou apenas explorando o terminal.

  1. Eu criei um arquivo touch Desktop/vvv .
  2. Agora atualizei o banco de dados usando sudo updatedb .
  3. O comando locate vvv não mostra nenhum resultado. Enquanto isso simplesmente funciona bem com find / -name vvv .

Descobri que locate parece não procurar em meu diretório pessoal, pois mostra resultados dos diretórios usr , var , slib , opt , etc.

Por que estou dizendo que isso acontece porque quando tento locate algum arquivo aleatório como complete , que está no diretório Download (que não é bem um nome exclusivo), ele mostra os resultados de outros diretórios, mas não o Download .

Atualização: Para demonstrar isso, copiei isso do terminal:

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$
    
por Aditya 01.06.2017 / 19:22

2 respostas

2

Por padrão find procura por seu padrão definido dentro de todos os arquivos e subdiretórios especificados em tempo real, então, mesmo após a pesquisa ter sido iniciada, você pode criar um novo arquivo em algum lugar e se find não tiver pesquisado lugar ainda vai encontrar esse arquivo para você.

por outro lado, como você sabe, o locate usa um banco de dados armazenado em cache para acelerar esse processo, mas armazena apenas alguns diretórios específicos, você pode usar o arquivo /etc/updatedb.conf para definir alguns diretórios a serem excluídos do cache.

atualizar os dados com sudo em uma máquina com vários usuários é uma causa de risco de segurança, pois acabamos em um banco de dados que contém todos os dados de usuários e todos podem procurá-los.

Para mim, sudo updatedb funciona bem, por isso, verifique /etc/updatedb.conf para ver se alguma coisa foi excluída em sua máquina.

Se você quiser criar um banco de dados apenas para seu usuário, você pode usar:

updatedb -l 0  --output=/home/username/.mydb.db

então, para pesquisar, use:

locate -d ~/.mydb.db search-pattern

E use aliases para torná-lo mais conveniente:

alias lupdatedb="updatedb -l 0  --output=/home/username/.mydb.db"
alias llocate="locate -d ~/.mydb.db"
    
por Ravexina 02.06.2017 / 10:15
1

updatedb verifica todo o seu sistema de arquivos e, como tal, é uma operação bastante cara. Não é para ser executado após cada criação de arquivos, e sim uma vez por dia para dar uma idéia aproximada dos arquivos do sistema.

Como você pode ver isso rodando via sudo , ele não cria nem atualiza um banco de dados por usuário, ele cria ou atualiza um global comum contendo um manifesto de todo o seu sistema. Seu sistema tem (ou potencialmente pode ter) vários usuários, cada um deles tendo acesso de leitura ao banco de dados.

Portanto, por questões de privacidade, por padrão, updatedb não verifica diretórios que não são legíveis por todos os usuários. Seria um risco de privacidade se você não concedesse acesso de leitura ao seu diretório pessoal para outras pessoas (como é o padrão na maioria das distribuições), mas outros usuários poderiam obter uma lista de seus arquivos via updatedb / locate .

Para localizar arquivos em seu diretório pessoal ou em qualquer lugar em que seja necessário refletir alterações recentes, você deve considerar usar find ou outros utilitários que varrem o sistema de arquivos quando necessário.

    
por egmont 02.06.2017 / 09:32