Jérôme Cutrona

Version statique de l'intranet de Jérôme Cutrona - Rejoindre la version dynamique 🔒

Les exemples et corrections sont potentiellement non fonctionnels.

B.U.T. Informatique - IUT de Reims - Université de Reims

Gérer le profil de ses applications et son quota disque sur Linux

Navigation

Préambule

Le quota d'espace disque et de nombre de fichiers appliqué sur votre répertoire personnel « $HOME » peut rapidement arriver à saturation, en particulier à cause du cache de certaines applications et outils de développement. L'objectif de ce tutoriel est de vous donner les commandes à passer pour libérer de l'espace disque et de vous donner les bonnes pratiques pour éviter de saturer votre quota.

Chercher l'origine de l'espace disque utilisé

La commande du permet d'afficher la taille des fichiers et répertoires. Elle est particulièrement utile pour afficher la taille des répertoires et sous-répertoires. Par exemple, pour afficher la taille de tous les répertoires et sous-répertoires du répertoire courant :

du -hs *

Il est possible d'afficher la taille des fichiers et répertoires contenus dans un répertoire donné :

du -hs répertoire_de_votre_choix/*

Les informations affichées peuvent être triées par taille avec la commande sort :

du -hs * | sort -h

Afficher la taille des répertoires et sous-répertoires du répertoire personnel

En appliquant les commandes précédentes à votre répertoire personnel, vous pouvez identifier les répertoires qui occupent le plus d'espace disque. Par exemple, pour afficher la taille des répertoires et sous-répertoires du répertoire personnel triés par taille :

du -hs $HOME/* | sort -h

Afficher la taille des répertoires et sous-répertoires cachés du répertoire personnel

Une grande partie de l'espace disque est occupée par des répertoires cachés qui contiennent souvent des informations de configuration. Il est donc nécessaire d'inclure les fichiers cachés en faisant précéder le symbole « * » d'un point « . ». Malheureusement, cela inclut également le répertoire courant et le répertoire parent. Une astuce classique consiste à utiliser le caractère joker « ? » qui représente un caractère quelconque pour former un motif de nom de fichier comportant au moins 3 caractères « .??* ». Ainsi, pour afficher la taille des répertoires et fichiers cachés du répertoire personnel triés par taille :

du -hs $HOME/.??* | sort -h

Vous pouvez également chercher les applications occupant le plus d'espace dans le répertoire de configuration :

du -hs $HOME/.config/* | sort -h

Trouver les répertoires « vendor »

Si vous avez créé des projets Symfony ou Composer dans votre répertoire personnel, vous avez installé des dépendances avec composer. Ces dépendances sont installées dans le répertoire « vendor » et peuvent occuper beaucoup d'espace disque. Pour trouver les répertoires « vendor » dans votre répertoire personnel (à l'exclusion des répertoires cachés) et calculer leur taille :

find $HOME/!(.*) -name vendor -prune -exec du -hs {} \;

Puisque vous versionnez vos projets avec Git et que vous êtes régulièrement invités à travailler dans le répertoire « /working », vous devriez certainement supprimer les répertoires « vendor » de vos projets, ainsi que les projets eux-mêmes pour travailler dans le répertoire « /working ». Veillez néanmoins à vérifier que vous avez effectué un commit des modifications de chaque projet, et surtout un push, avant de supprimer les projets concernés.

Trouver les répertoires « node_modules »

Si vous avez créé des projets Node.js dans votre répertoire personnel, vous avez installé des dépendances avec npm. Ces dépendances sont installées dans le répertoire « node_modules » et peuvent occuper beaucoup d'espace disque. Pour trouver les répertoires « node_modules » dans votre répertoire personnel (à l'exclusion des répertoires cachés) et calculer leur taille :

find $HOME/!(.*) -name node_modules -prune -exec du -hs {} \;

Puisque vous versionnez vos projets avec Git et que vous êtes régulièrement invités à travailler dans le répertoire « /working », vous devriez certainement supprimer les répertoires « node_modules » de vos projets, ainsi que les projets eux-mêmes pour travailler dans le répertoire « /working ». Veillez néanmoins à vérifier que vous avez effectué un commit des modifications de chaque projet, et surtout un push, avant de supprimer les projets concernés.

Les navigateurs installés sur Linux sont Firefox et Chrome. Aucun des deux ne permet de limiter la taille de son cache dans la configuration. Il est donc nécessaire de vider régulièrement le cache des navigateurs que vous utilisez pour libérer de l'espace disque.

De plus, le mécanisme de mise à jour exotique utilisé au département informatique peut entrainer la corruption de votre profil utilisateur pour certaines applications et cela a été constaté pour les navigateurs Web. Il peut donc être nécessaire de supprimer votre profil utilisateur Firefox et Chrome pour résoudre le problème.

Travail à réaliser
  1. Ouvrez Firefox
  2. Collez « about:preferences#privacy » dans la barre d'adresse
  3. Dans la section « Cookies and Site Data », cliquez sur le bouton « Clear Data… »
  4. Cochez la case « Cached Web Content » et appuyez sur le bouton « Clear » (il n'est pas nécessaire de cocher la case « Cookies and Site Data »)
Travail à réaliser
  1. Ouvrez Chrome
  2. Collez « chrome://settings/clearBrowserData » dans la barre d'adresse
  3. Cochez la case « Images et fichiers en cache » et appuyez sur le bouton « Effacer les données » (il n'est pas nécessaire de cocher les autres cases)

Si vous rencontrez des problèmes avec Firefox, il est possible de supprimer votre profil utilisateur. Attention, cette manipulation supprime toutes les données associées à Firefox : cache, favoris, historique, …

Travail à réaliser
  1. Fermez Firefox
  2. Supprimez le répertoire « $HOME/.mozilla » :
    rm -rf $HOME/.mozilla
Travail à réaliser

Si vous rencontrez des problèmes avec Chrome, il est possible de supprimer votre profil utilisateur. Attention, cette manipulation supprime toutes les données associées à Chrome : cache, favoris, historique, … Si vous utilisez la synchronisation de Chrome, vos données seront restaurées lors de la prochaine connexion à votre compte Google.

  1. Fermez Chrome
  2. Supprimez le répertoire « $HOME/.config/google-chrome » :
    rm -rf $HOME/.config/google-chrome

Supprimer le cache de (presque) tous les outils et applications

Vous pouvez supprimer le cache de toutes les applications. Cette manipulation est un peu extrême mais permet généralement de libérer beaucoup d'espace dans votre profil.

Travail à réaliser
  1. Fermez toutes les applications
  2. Ouvrez un terminal
  3. Passez la commande :
    rm -rf $HOME/.cache

Relocaliser le cache de certains outils

Il est possible de relocaliser le cache de certains outils dans le répertoire temporaire. Cela permet de limiter l'impact sur votre quota d'espace disque. Cependant, cette configuration est spécifique à l'infrastructure de l'IUT et ne doit pas être reproduite sur votre ordinateur personnel.

Relocaliser le cache de Composer

Afin d'accélérer les installations futures et de limiter l'impact sur votre quota d'espace disque, nous allons relocaliser le cache de Composer dans le répertoire temporaire.

Information

Cette configuration est une nouvelle fois spécifique à l'infrastructure de l'IUT. Ne faites pas de modification du répertoire de cache de Composer sur votre ordinateur personnel.

Travail à réaliser
  1. Videz le cache actuel avec la commande :
    composer clearcache
  2. Modifiez l'emplacement du cache avec la commande :
    composer config --global cache-dir /tmp/$USER/composer
  3. Vérifiez la bonne exécution de la commande précédente en affichant le contenu du fichier « $HOME/.config/composer/config.json » :
    cat $HOME/.config/composer/config.json
    {
        "config": {
            "cache-dir": "/tmp/votre_login/composer"}
    }

Relocaliser le cache de npm

Afin d'accélérer les installations futures et de limiter l'impact sur votre quota d'espace disque, nous allons relocaliser le cache de npm dans le répertoire temporaire.

Information

Cette configuration est une nouvelle fois spécifique à l'infrastructure de l'IUT. Ne faites pas de modification du répertoire de cache de npm sur votre ordinateur personnel.

Travail à réaliser
  1. Videz le cache actuel avec la commande :
    npm cache clear --force
  2. Modifiez l'emplacement du cache avec la commande :
    npm config --user set cache /tmp/$USER/npm
  3. Vérifiez la bonne exécution de la commande précédente en affichant le contenu du fichier « $HOME/.npmrc » :
    cat $HOME/.npmrc
    cache=/tmp/votre_login/npm

Relocaliser le cache de PHP Depend, utilisé par PHP Mess Detector

PHP Mess Detector utilise PHP Depend qui est un outil d'analyse et de mesure du code PHP. Dans son fonctionnement classique, il génère des fichiers de cache qui peuvent occuper beaucoup d'espace disque dans votre répertoire d'accueil et surtout ralentir son fonctionnement puisque votre répertoire d'accueil est sur un système de fichiers en réseau. Nous allons donc relocaliser le cache de PHP Depend en mémoire.

Information

Cette configuration est une nouvelle fois spécifique à l'infrastructure de l'IUT. Ne faites pas de modification du répertoire de cache de PHP Depend sur votre ordinateur personnel.

Travail à réaliser
  1. Videz le cache actuel avec la commande :
    rm -Rf $HOME/.pdepend
  2. Essayez de vous souvenir des projets qui utilisent PHP Mess Detector
  3. Dans chaque projet utilisant PHP Mess Detector, même ceux localisés dans « /working » ajoutez les lignes de configuration concernant le cache dans le fichier « pdepend.xml » :
    <?xml version="1.0"?>
    <symfony:container xmlns:symfony="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://pdepend.org/schema/dic/pdepend"
        xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
        <config>
            <cache>
                <driver>memory</driver>
            </cache>
        </config>
    </symfony:container>