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?
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)
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):
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).
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.
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.
Courir
Sudo updatedb
avant de localiser. Cela mettra à jour la base de données.