web-dev-qa-db-fra.com

Impossible de localiser un répertoire en utilisant "localiser"?

Je souhaite localiser un répertoire sur mon système à l'aide de la commande "localiser". Je sais qu'il existe un répertoire nommé "bench-repo". quand je donne la commande suivante, il me montre l'erreur suivante:

locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory

Pourquoi cela arrive-t-il? Comment puis-je trouver le répertoire?

9
tuxtu

La base de données binaire utilisée par locate (/var/lib/mlocate/mlocate.db) est mise à jour une fois par jour par cron, de sorte que locate ne trouvera pas de nouveaux fichiers.

Vous pouvez résoudre ce problème en exécutant d'abord Sudo updatedb

Sudo updatedb && locate -e bench-repo

C'est une bonne idée d'utiliser l'indicateur -e pour ne retrouver que les fichiers qui existent encore.

Oh et voici un bonus: vous pouvez obtenir locate une liste détaillée en passant à ls -l

ls -l $(locate -e bench-repo)
11
Zanna

Deux causes deux actions

En général, lorsque vous n'êtes pas en mesure de locate un fichier ou parce que récemment créé (après la dernière mise à jour de la base de données) ou parce que ce n'est pas dans les chemins où updatedb va rechercher ses entrées ou correspond à certaines règles d'élagage (voir ci-dessous):

  1. S'il s'agit d'un nouveau fichier ou répertoire, Si vous avez assez de privilèges, vous pouvez forcer une mise à jour:

    Sudo updatedb 
    

    cela mettra à jour tous et seulement les fichiers et les répertoires présents dans les chemins autorisés et non ignorés (cas 2).

  2. Dans le cas où le fichier était sur les chemins scannés par updatedb, ou correspondait à certains règles d'exclusions vous pouvez modifier le fichier de configuration et mettre à jour la base de données:

    Sudo pico /etc/updatedb.conf  # manual update
    Sudo updatedb
    

    En effet, vous pouvez trouver les clés des fichiers/répertoires élagués dans le fichier de configuration /etc/updatedb.conf. Recherchez PRUNENAMES, PRUNEPATHS ou PRUNEFS, modifiez-le en conséquence, puis mettez à jour à nouveau la base de données.

Quelques mots de plus sur locate et updatedb

Pour pouvoir locate un fichier ou un répertoire, il doit être réellement inclus dans votre base de données mlocate , généralement stocké dans /var/lib/mlocate/mlocate.db.

Cette base de données est mise à jour périodiquement. Par défaut, il est mis à jour quotidiennement et vous pouvez voir son fichier cron dans /etc/cron.daily/mlocate. S'il n'est pas présent, vous pouvez le rechercher avec locate mlocate | grep cron et voir où il se trouve et à quelle fréquence.

Utilisez man locate et man updatedb pour d'autres lectures.

5
Hastur

Courir

Sudo updatedb

avant de localiser. Cela mettra à jour la base de données.

2
PeeKay