No FreeBSD 12, em uma máquina virtual recém-criada ( DigitalOcean ), tentei usar o locate
comando.
$ locate java
Recebi um erro.
localize: banco de dados muito pequeno: /var/db/locate.database
Execute /usr/libexec/locate.updatedb
Então eu corri locate.updatedb
.
$ /usr/libexec/locate.updatedb
Recebi uma mensagem, reclamando sobre permissões.
/usr/libexec/locate.updatedb: não pode criar /var/db/locate.database: Permissão negada
OK. Execute como sudo.
$ sudo /usr/libexec/locate.updatedb
Recebi um aviso de segurança.
AVISO
Executando updatedb como root. Isso irá revelar todos os nomes de arquivos
em sua máquina para todos os usuários de login, o que é um risco de segurança.
Unix é muito divertido.
➥ Qual é a maneira segura de encontrar um arquivo ou diretório pelo nome em seu sistema FreeBSD?
locate
é uma maneira fácil de pesquisar um arquivo rapidamente, pois possui seu próprio banco de dados. No entanto, eu sempre uso apenasfind(1)
. Os resultados são retornados ao usuário que o executou, e o usuário que o executou só pode localizar arquivos para os quais tenha as permissões de sistema de arquivos apropriadas.find
pesquisa recursivamente, então você pode especificar/
como o caminho de pesquisa se quiser pesquisar todos os sistemas de arquivos.Encontrando todos os arquivos e diretórios chamados
foo
:Encontrando apenas arquivos chamados
foo
:Encontrando apenas diretórios chamados
foo
:Existem muitas opções úteis. Confira a página man .
run periodic
Como você aprendeu, o
locate
comando usa um banco de dados que armazena uma coleção indexada de seus nomes de arquivos e pastas. Como sua instalação do FreeBSD é totalmente nova, esse banco de dados ainda não foi construído.Quando o banco de dados será construído? Quando o FreeBSD realiza suas tarefas domésticas regulares. Existem lotes de tais tarefas a serem feitas automaticamente em uma base diária, semanal e mensal. Veja o
periodic
comando.Você pode querer realizar essas tarefas domésticas imediatamente, depois de criar sua máquina virtual. Corre:
Ou execute todos os três em uma linha.
Na minha experiência, eles levam cerca de um minuto cada.
➥ Em particular,
weekly
aquele parece criar/atualizar olocate
banco de dados. Quando você não consegue encontrar algo que você sabe que existe, façarun periodic weekly
.Se estiver curioso, você pode verificar a existência e o tamanho do seu
locate
banco de dados antes e depois de executar operiodic
. Provavelmente encontrado aqui:/var/db/locate.database
Agora você deve ser capaz de usar o
locate
comando com sucesso.