Chaque fois que j'ai besoin de vider le cache, je dois aller dans chaque dossier et en supprimer le contenu. Le faire via le terminal supprime le dossier entier, ce qui n'est pas recommandé. Que dois-je faire ?
Réponses
Trop de publicités?Pour de nombreuses questions de ce type, j'ai l'impression que les gens répondent sans se demander quelle est l'intention de l'auteur de la question.
Pourquoi voulez-vous supprimer automatiquement les fichiers cache ? C'est généralement une mauvaise idée.
J'ai vu tant de questions où les gens voulaient supprimer une application système, un cache, un fichier de configuration ou autre. Il faut alors réinstaller le système d'exploitation ou l'utilisateur se plaint que la machine est instable ou peu fiable et quelqu'un doit passer des heures, des jours ou des mois à essayer de diagnostiquer quelque chose qui n'aurait jamais dû être modifié.
MacOS, en particulier, n'est PAS Windows. Vous n'avez PAS besoin de purger les caches, de défragmenter ou quoi que ce soit d'autre. Si vous le faites, et surtout si vous le faites régulièrement, c'est qu'il y a un problème plus profond.
J'écris cette réponse sur un MacBook Pro qui n'a fait l'objet d'aucune maintenance explicite depuis El Capitan ; j'utilise maintenant la dernière version Mojave après l'avoir mise à niveau des dizaines de fois. Je développe des logiciels, j'ai généralement une tonne de conteneurs Docker et de VM Parallels en cours et je fais beaucoup de montage vidéo avec FCP X/Motion. J'ai eu extrêmement peu de problèmes et aucun plantage sur plusieurs années d'utilisation. Les performances sont excellentes.
Cela s'explique en partie par le fait que je ne me réveille pas le matin pour décider, sur un coup de tête, de supprimer mes fichiers de cache, de modifier manuellement ma table de partition ou de supprimer des services clés tels que Safari.
Alors que j'écris cette réponse, je vois des messages sur des sujets tels que "Firefox se bloque lorsque je supprime les fichiers de cache et les cookies" et "Comment restaurer un trousseau de clés supprimé accidentellement". Traitez-moi de stupide AF, mais pourquoi diable tentez-vous le destin ?
Tous les logiciels reposent sur de nombreuses hypothèses quant à leurs fondements. Personne ne peut écrire un code qui tienne compte de toutes les possibilités. Je sais que je suis en plein dans le domaine de la rhétorique, mais vous ne devriez pas supprimer les fichiers de cache à moins de connaître intimement chaque ligne de code qui utilise ces fichiers de cache, directement ou indirectement. Je vous assure que ni Apple ni Microsoft n'ont testé le bon fonctionnement de leurs logiciels si une partie ou la totalité des fichiers cache du système disparaît... en fait, avoir un ensemble incohérent de fichiers cache parce que vous avez supprimé certains d'entre eux mais que vous ne connaissiez même pas tous les autres, c'est précisément la façon dont vous vous retrouvez en difficulté.
Et si vous ressentez toujours le besoin de fouiller sous le capot, sauvegardez religieusement, s'il vous plaît. Un jour, vous allez faire une gaffe et faire un "sudo rm -rf /" ou créer une incohérence qui ne pourra pas être facilement corrigée.
Pensez-y... Humpty Dumpty a été poussé...
Méthode n° 1 : Utilisation find
Vous pouvez utiliser les outils standard de l'interface de programmation d'UNIX pour effectuer cette opération à partir du terminal assez facilement. L'outil standard de recherche de fichiers et de répertoires s'appelle ironiquement find
.
Par exemple, ici, je l'utilise pour trouver tous les .gz
dossiers sous /
:
$ sudo find /Library/Caches/ -type f -name '*.gz' | head
/Library/Caches//WorldWindData/Earth/PlaceNames/WFSPlaceNamesVersion1.0/toppwpl_oceans/0/0_0.xml.gz
/Library/Caches//WorldWindData/Earth/PlaceNames/WFSPlaceNamesVersion1.0/toppwpl_waterbodies/0/0_2.xml.gz
/Library/Caches//WorldWindData/Earth/PlaceNames/WFSPlaceNamesVersion1.0/toppwpl_waterbodies/0/0_0.xml.gz
/Library/Caches//WorldWindData/Earth/PlaceNames/WFSPlaceNamesVersion1.0/toppwpl_waterbodies/0/0_4.xml.gz
/Library/Caches//WorldWindData/Earth/PlaceNames/WFSPlaceNamesVersion1.0/toppwpl_waterbodies/0/0_3.xml.gz
/Library/Caches//WorldWindData/Earth/PlaceNames/WFSPlaceNamesVersion1.0/toppwpl_waterbodies/0/0_1.xml.gz
/Library/Caches//WorldWindData/Earth/PlaceNames/WFSPlaceNamesVersion1.0/toppwpl_waterbodies/0/0_5.xml.gz
/Library/Caches//WorldWindData/Earth/PlaceNames/WFSPlaceNamesVersion1.0/toppwpl_waterbodies/0/0_7.xml.gz
/Library/Caches//WorldWindData/Earth/PlaceNames/WFSPlaceNamesVersion1.0/toppwpl_waterbodies/1/1_2.xml.gz
/Library/Caches//WorldWindData/Earth/PlaceNames/WFSPlaceNamesVersion1.0/toppwpl_waterbodies/1/1_0.xml.gz
Vous pouvez alors construire un find
qui localisera vos fichiers et dira ensuite à find
pour les supprimer comme suit :
$ find /path/to/some/dir -type f -name '*.gz' -delete
Exemple
Ici, je crée un répertoire d'échantillons appelé somedir
qui contiendra un tas de faux .plist
pour montrer comment la commande ci-dessus peut fonctionner.
$ mkdir dir{1..10}
$ touch dir{1..10}/file{1..10}.gz file{1..10}.gz
Il en résultera des sous-répertoires nommés dir1
, dir2
, ..., dir10
avec des fichiers à la fois à l'intérieur et à l'extérieur des noms file1.gz
, ..., file10.gz
.
Une partie de la structure :
$ tree | head -20
.
dir1
file1.gz
file10.gz
file2.gz
file3.gz
file4.gz
file5.gz
file6.gz
file7.gz
file8.gz
file9.gz
dir10
file1.gz
file10.gz
file2.gz
file3.gz
file4.gz
file5.gz
file6.gz
...
...
Maintenant, pour supprimer tous les .gz
des dossiers :
$ find . -type f -name '*.gz' -delete
Il en résulte ceci :
$ tree
.
dir1
dir10
dir2
dir3
dir4
dir5
dir6
dir7
dir8
dir9
10 directories, 0 files
Plus de dossiers
Si vous devez supprimer plus de .gz
vous pouvez inclure plus de -name...
pour les spécifier.
$ find . -type f -name '*.gz' -o -name '*.blah'
Ici, nous recherchons les fichiers qui correspondent au modèle .gz
o .blah
. Les -o
est un opérateur logique OR pour find
.
Méthode n° 2 : Utilisation de AssetCacheManagerUtil
Si votre système utilise le contenu de la mise en cache, vous pouvez utiliser l'outil CLI AssetCacheManagerUtil
pour effectuer une flushCache
. Si vous n'êtes pas familier avec cette fonctionnalité de MacOS :
La mise en cache du contenu est une fonctionnalité de MacOS Internet et d'accélérer l'installation de logiciels sur les ordinateurs Mac, iOS et Apple TV.
La mise en cache du contenu accélère le téléchargement des dis et les données que les utilisateurs stockent dans iCloud en sauvegardant le contenu que les ordinateurs Mac locaux, les appareils iOS et les appareils Apple TV. Le contenu sauvegardé est stocké dans un cache de contenu sur un Mac et est et peut être récupéré par d'autres appareils sans passer par l'internet. Internet.
Cette CLI dispose d'une page de manuel qui explique comment l'utiliser.
$ man AssetCacheManagerUtil
Vous pouvez utiliser cette commande pour vérifier s'il est déjà actif :
$ AssetCacheManagerUtil status
Pour vider le contenu mis en cache, vous devez utiliser cette commande :
$ sudo AssetCacheManagerUtil flushCache
2019-04-18 20:25:25.510 AssetCacheManagerUtil[70975:1826791] La mise en cache du contenu a vidé son cache.
Pour vider votre contenu personnel mis en cache :
$ sudo AssetCacheManagerUtil flushPersonalCache
2019-04-18 20:26:03.147 AssetCacheManagerUtil[71033:1827060] La mise en cache du contenu a vidé son cache.
Pour en savoir plus sur le service de mise en cache de MacOS, cliquez ici :