119 votes

Comment nettoyer /tmp?

rizhas@rizhas-laptop:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda7        67G   58G  5,2G  92% /
none            4,0K     0  4,0K   0% /sys/fs/cgroup
udev            1,5G   12K  1,5G   1% /dev
tmpfs           303M  1,2M  302M   1% /run
none            5,0M     0  5,0M   0% /run/lock
none            1,5G  348K  1,5G   1% /run/shm
none            100M   80K  100M   1% /run/user
overflow        1,0M  1,0M     0 100% /tmp
overflow        1,0M  1,0M     0 100% /tmp

Comment nettoyer /tmp ?

185voto

Andrei R Points 1951

/tmp est censé être nettoyé au redémarrage, mais si vous ne redémarrez pas (ce qui est normal pour les serveurs), le nettoyage ne se fera pas

find /tmp -ctime +10 -exec rm -rf {} +

supprimera tous les fichiers et dossiers de plus de 10 jours. vous voudrez peut-être l'ajouter au cron quotidien.


MISE À JOUR

Dans les commentaires ci-dessous, @sfussenegger recommande un format légèrement différent de cette commande qui pourrait mieux correspondre à vos besoins et au système sur lequel vous travaillez.

sudo find /tmp -type f -atime +10 -delete

Ici, la commande utilise sudo pour s'assurer que tout est supprimé (ou vous pourriez l'exécuter en tant que root), agissant sur les fichiers qui n'ont pas été accédés depuis plus de 10 jours et supprimant uniquement les fichiers, pas les dossiers. Elle utilise également -delete pour éviter d'avoir à exécuter la commande rm

41voto

Rinzwind Points 270388

Vous pouvez supposer que tout ce qui se trouve dans un répertoire tmp (/tmp/ /usr/tmp etc) peut être supprimé. AVANT de commencer à supprimer, arrêtez tous les programmes et services que vous utilisez, car /tmp/ peut être utilisé par des programmes pour stocker temporairement des informations pour cette session. Donc faites un sudo service mysql stop et un sudo service apache2 stop si vous avez un mysql et/ou apache en cours d'exécution. Le nom des fichiers dans le répertoire /tmp/ donne souvent une indication de leur origine.

Donc, en ligne de commande...

cd /tmp/
pwd
sudo rm -r *

va vider le répertoire /tmp/ et supprimer tous les fichiers et sous-répertoires. Faites attention à taper correctement la commande. La commande pwd n'est pas nécessaire mais devrait afficher /tmp.

Si vous souhaitez le faire de manière interactive (pour confirmer la suppression) :

cd /tmp/
sudo rm -ri *

Il est également bon de noter qu'un redémarrage va vider /tmp comme indiqué ici : Comment le répertoire /tmp est-il nettoyé ? Donc si /tmp/ est rempli de fichiers après un redémarrage, vous devez enquêter sur l'origine de ces fichiers.

J'aimerais également signaler que 1 Mo pour /tmp n'est pas beaucoup d'espace. Utilisez-vous MySQL ? Consultez https://unix.stackexchange.com/a/76058/10017 pour savoir comment résoudre ce problème (merci @drc)

17voto

Simon Richter Points 3021

Le programme tmpreaper peut être utilisé pour nettoyer périodiquement /tmp. Ce programme supprime tout ce qui n'a pas été consulté dans un laps de temps donné, généralement deux semaines. Pour que cela fonctionne correctement, le système de fichiers sur lequel il se trouve devrait avoir l'option atimes activée. Si vous utilisez un tmpfs, ce qui semble être le cas, alors tout devrait bien se passer.

Évidemment, redémarrer vide également /tmp, mais ce serait ennuyeux.

6voto

Jonathan Gilbert Points 497

Le répertoire /tmp signifie temporaire.

Ce répertoire stocke des données temporaires. Vous n'avez pas besoin de supprimer quoi que ce soit, les données contenues dedans sont automatiquement supprimées après chaque redémarrage.

Cependant, si vous souhaitez supprimer les données présentes dedans, utilisez

sudo rm -r /tmp/*

Supprimer des données de celui-ci ne causera aucun problème car ce sont des fichiers temporaires.

4voto

Faites attention avant d'exécuter une commande comme rm -r ./*. Une fois que vous l'aurez exécutée, il sera très difficile, voire impossible, de récupérer des données.

Tout sera supprimé. Assurez-vous que le répertoire que vous supprimez est le bon.

Il existe une manière plus sûre de gérer les choses.

# sudo rm -r /tmp/*

Ainsi, si vous exécutez accidentellement cette commande depuis votre historique de shell history, elle ne supprimera pas les mauvais fichiers (à moins que vous ne les conserviez dans /tmp).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X