J'ai exécuté find / -name abc.html
et peu de temps après, j'ai à nouveau exécuté cette commande. Cette fois, c'était très rapide, donc je sais que la find
doit mettre le résultat en cache quelque part.
Comment puis-je savoir où le cache est stocké?
En effet, comme l'a souligné @zongfu, find
ne cache pas ses résultats dans un fichier, mais le noyau met en cache les répertoires find
en cours de lecture afin qu'ils puissent être lus sans toucher le disque, pourquoi c'est plus rapide Si vous voulez toujours voir quel type de IO un programme est en train de faire, vous pouvez utiliser strace
. Ce programme exécute un autre programme que vous spécifiez et enregistre les appels système effectués par le programme. Sans aucun argument, il les imprimera tous, ce qui peut représenter beaucoup d'informations. Par conséquent, vous voudrez le limiter à certains appels, tels que open()
, de manière à voir quels fichiers le programme va ouvrir. Cela ressemblerait à:
strace -eopen someprogram
find
ne met rien en cache, en particulier sur le disque. La deuxième exécution est beaucoup plus rapide parce que Linux met en mémoire cache les données consultées (dans ce cas, les listes de répertoires) (voir free
).