Nestor: ne cherchez pas pour des prunes!

par Martin Ouwehand, SIC-Exploitation

Introduction

Divers indices me poussent à croire que de trop nombreux utilisateurs effectuent la commande find à partir de clients de Nestor sans se rendre compte qu'avec NFS (Network File System) les file-systems du serveur de fichiers sont virtuellement intégrés à la hiérarchie des fichiers des machines clientes et que par conséquent, si des dispositions spéciales ne sont pas prises, cette commande find peut aller parcourir, à travers le réseau, une partie de l'arborescence des fichiers de Nestor. Si, comme je crois que c'est le cas la plupart du temps, cette recherche sur le serveur de fichiers passe inaperçue (commandes find initiées par cron, par exemple) et n'était pas prévue par l'utilisateur, ceci entraîne un gaspillage inutile de ressources, tant du réseau que du serveur Nestor. N'oublions pas que les file-systems de Nestor comptent au moins 5 Gigabytes, et que /distribution, le file-system où résident les logiciels d'intérêt général, frise les 600'000 inodes (fichiers, directoires et liens symboliques).

L'option -prune de find

Le remède à cette situation est très simple: il faut utiliser l'option -prune de find pour laisser de côté dans la recherche les directoires correspondant à des file-systems importés d'autres machines par NFS. Dans la majorité des cas ça signifie que les commandes find doivent avoir le format suivant:

find (directoires soumis à la recherche) -type nfs -prune -o (autres options de find)

ce qu'on pourrait traduire par «dans la recherche, soit un directoire est monté par NFS et il est mis de côté (c'est l'effet de l'option -prune), soit il est soumis aux autres options auxquelles j'avais initialement pensé».

Je recommande instamment à tous les administrateurs de clients de Nestor de vérifier les entrées des fichiers crontab de tous les utilisateurs de ces clients (et en particulier root) pour s'assurer que ne s'y trouve aucune commande find dont un des effets serait d'aller parcourir inutilement l'arborescence de directoires montés depuis Nestor.

La commande locate

Comment faire alors pour retrouver un fichier dans cette monstrueuse /distribution? La commande locate permet de consulter une base de données des fichiers de /distribution. Un exécutable se trouve sous /logiciels/public/gnu/bin/locate, qui pointe vers nestor:/distribution/public/gnu/(architecture) /bin/locate (si on a suivi les indications de mon collègue Claude Lecommandeur, cf. FI/6-92) . La base de données elle-même se trouve sous /logiciels/distribution/.ldb (toujours dans le modèle de configuration proposé par Claude Lecommandeur) qui pointe vers nestor:/distribution/.ldb. Le format de la commande est:

locate -d (base de données) (chaîne de recherche)

On peut ne pas mentionner la base de données à consulter (option -d) si celle-ci est définie dans la variable d'environnement LOCATE_PATH. Si la chaîne de recherche ne contient pas les caractères spéciaux *, ?, [ et ], la commande affichera toutes les entrées de la base de données contenant la chaîne de recherche. Les caractères spéciaux ont à peu près la même signification que dans le Bourne Shell : ? représente n'importe quel caractère unique, * représente n'importe quelle suite de caractères (y compris . et /, ce qui n'est pas le cas dans le shell), [(ensemble de caractères) ] représente n'importe lequel des caractères spécifiés (ils peuvent être donnés sous forme d'intervalle: [a-z0-9] représente toute lettre minuscule ou chiffre) alors que [^(ensemble de caractères)] représente n'importe lequel des caractère ne faisant pas partie de l'ensemble donné. Si la chaîne de recherche contient ces caractères spéciaux (auquel cas il est recommandé de les protéger de toute interprétation intempestive par le shell en les encadrant par des apostrophes), la commande n'affichera que les entrées qui contiennent dans leur intégralité le motif décrit dans la chaîne de recherche.

La base de données est mise à jour chaque week-end. Le format de ses lignes est:

aa/mm/jj hh:mm:ss (nom de fichier) (caractère de type)

La date et l'heure sont celles de la dernière modification du fichier. Le caractère en fin de ligne indique le type de fichier: d pour directoire, f pour fichier et l pour lien symbolique. Les entrées sont classées par ordre de date de modification (les fichiers modifiés le plus récemment sont au début), ce qui fait que la commande suivante permettra de se faire une idée des changements les plus récents sur nestor:/distribution:

locate -d /logiciels/distribution/.ldb '*' | more


article paru dans le Flash informatique no 5 du 17 mai 1994