La première solution, à l'ancienne peut-on dire, consiste généralement à copier un fichier d'une taille supérieure à la quantité de RAM disponible vers /dev/null: On commence par créer un gros fichier dans le /tmp avec la commande dd, ici un fichier rempli de zéro d'une taille de 2 Go. C'est la variable count= qui importe puisqu'il faut qu'elle soit supérieur à la RAM du système. Néanmoins, sinon on veut que cette opération reste un brin véloce, il vaut mieux ne pas créer un fichier inutilement gros. Evidemment, si le /tmp est sur une partition séparée, il vaut mieux que cette partition soit d'une taille supérieure à celle du fichier que l'on s'apprête à créer!




dd if=/dev/zero of=/tmp/gros_fichier bs=1024 count=2097152

Ensuite, on lit ce fichier avec cat et on le redirige vers /dev/null

cat /tmp/gros_fichier > /dev/null

Ca marche, mais c'est tout de même plutôt fastidieux et long. De plus, sur un portable où on dispose d'un seul disque dur, cela risque de faire beaucoup monter la charge système.

La deuxième solution, encore plus à l'ancienne, consiste à démonter puis remonter le système de fichier sur lequel se trouvent les fichiers que l'on souhaite vider du cache. Totalement inenvisageable!

La troisième piste ma paraît plus prometteuse. Sur le blog de mtj, un premier commentaire propose la solution suivante, jugée dangereuse par un autre commentateur (à quel titre? il serait intéressant de la savoir):

sync; echo 1 > /proc/sys/vm/drop_caches

Sur ce blog consacré à VIM, la solution faisant appel à cette dernière ligne de commande est recommandée également, avec la précision que la commande doit être donnée en tant qu'utilisateur root. Cette commande fonctionne à partir de la version 2.6.16 du noyau (Debian Etch et suivantes, Ubuntu Feisty et suivantes...). Enfin, sur le wiki de Open Office, solution similaire à la première solution à l'anciene, mais qui me paraît également trop lourde pour être effectuée en "live" (remplir toute la RAM, puis vider tout le cache d'un block device).