Résoudre le problème “Argument list too long” lors de la suppression de fichier

Lors de la suppression de plusieurs fichiers en une fois sur un de mes serveurs, j’ai été confronté à un problème.

Le message d’erreur Argument list too long s’est affiché lors que j’ai voulu supprimer un grand nombre de fichier de session obsolète PHP.

Ce message d’erreur vient du fait que la limite de la CLI a été atteinte (sachant que l’étoile dans la commande prend chaque fichier).
Quand un dossier contient plusieurs millions de fichiers, le kernel Linux arrête la commande car la commande est trop long.
Ce problème peut également se présenter sur d’autres commandes fonctionnant comme cp, comme par exemple cp, mv, etc

La solution pour contourner ce problème est de passer par la commande find et xargs.

La commande find permet de trouver tous les fichiers dans un certains emplacement, et xargs permet de chaîner des commandes qui prennent des arguments en entrée.

La commande ci-dessous est donc à saisir:

Important: Aucune confirmation ne sera demandée pour supprimer des fichiers ou des dossiers.
Soyez-sûr de ce que vous faîtes, quitte à faire un “echo” au lieu de la commande “rm”.
sudo find EMPLACEMENT -name 'PATTERNE' | sudo xargs rm

EMPLACEMENT est l’emplacement du dossier ou chercher, comme par exemple /var/log/
PATTERNE correspond au patterne à chercher et prendre les fichiers à supprimer, comme par exemple *.log

Les erreurs seront affichés dans le terminal ou dans la session SSH actuellement étable.

Tags

Il n’y a aucun contenu à afficher ici pour l’instant.