366 votes

Comment le répertoire /tmp est-il nettoyé ?

Comment le répertoire /tmp est-il nettoyé? Est-ce automatique? Si oui, à quelle fréquence est-il nettoyé?

18 votes

Mes fichiers temporaires ne sont jamais écrits sur le disque. Ils sont écrits sur un disque RAM. J'ai mis tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0 dans /etc/fstab.

0 votes

211voto

Adam Points 6342

Note! Cette réponse est obsolète depuis au moins ubuntu 14.04. Voir d'autres réponses pour la situation actuelle et si elles se révèlent correctes, votez-les furieusement. Postez également un commentaire afin que je puisse mettre un lien vers la réponse correcte actuelle ici.

Pour 14.04 voir https://askubuntu.com/a/759048/1366

Pour 16.10 voir https://askubuntu.com/a/857154/453746


Ancienne réponse de 2011 :

Le nettoyage de /tmp est effectué par le script upstart /etc/init/mounted-tmp.conf. Le script est exécuté par upstart à chaque fois que /tmp est monté. Pratiquement, cela signifie à chaque démarrage.

Le script fait approximativement ce qui suit : si un fichier dans /tmp est plus vieux que $TMPTIME jours, il sera supprimé.

La valeur par défaut de $TMPTIME est 0, ce qui signifie que tous les fichiers et répertoires dans /tmp seront supprimés. $TMPTIME est une variable d'environnement définie dans /etc/default/rcS.

1 votes

Ce n'est plus vrai pour 14.04 (le script n'existe plus).

0 votes

@Martin Schröder - le script existe sur mon système et c'est une installation propre de 14.04 et tmpreaper n'existe pas!

0 votes

Je suis maintenant sous arch linux donc je ne peux pas vérifier. Désolé. S'il vous plaît, quelqu'un peut-il vérifier cela et commenter ou éditer ma réponse.

151voto

Le répertoire est effacé par défaut à chaque démarrage, car TMPTIME est 0 par défaut.

Ici vous pouvez changer le temps dans le fichier suivant :

/etc/default/rcS

TMPTIME indique à quelle fréquence le répertoire tmp doit être effacé en jours

13 votes

Effacer à chaque démarrage n'est pas idéal pour une machine qui n'est jamais redémarrée, comme un serveur. J'ai plus de 500 000 fichiers occupant 5 Go d'espace dans mon /tmp car mon serveur a une durée de fonctionnement de 378 jours. Je suis réticent à le redémarrer, simplement parce que la suppression de ces fichiers au redémarrage peut prendre des heures.

11 votes

Dans votre cas, vous devriez donner une chance à tmpreaper.

1 votes

Un travail CRON pourrait facilement résoudre cela.

73voto

NotMe Points 3732

Alors que le dossier /tmp n'est pas un endroit pour stocker des fichiers à long terme, parfois vous voulez conserver les choses un peu plus longtemps que la prochaine fois que vous redémarrez, ce qui est la valeur par défaut sur les systèmes Ubuntu. Il m'est arrivé une fois ou deux d'avoir téléchargé quelque chose dans /tmp pendant les tests, redémarré après avoir apporté des modifications et ensuite perdu à nouveau les données originales. Cela peut être modifié si vous souhaitez conserver vos fichiers /tmp un peu plus longtemps.

Changer la fréquence de nettoyage de /tmp

Le paramètre par défaut qui indique à votre système de vider /tmp au redémarrage est contenu dans le fichier /etc/default/rcS. La valeur que nous allons examiner est TMPTIME.

La valeur actuelle de TMPTIME=0 indique de supprimer les fichiers au redémarrage quel que soit l'âge du fichier. Changer cette valeur pour un chiffre (positif) différent modifiera le nombre de jours pendant lesquels un fichier peut rester dans /tmp.

TMPTIME=7

Ce paramètre permettrait aux fichiers de rester dans /tmp jusqu'à une semaine, puis de les supprimer lors du prochain redémarrage. Un nombre négatif (TMPTIME=-1) indique au système de ne jamais supprimer quoi que ce soit dans /tmp. Ce n'est probablement pas ce que vous voulez, mais c'est une option disponible.

1 votes

Bonne explication. Mais dans quel script se trouve la commande de nettoyage? J'ai vu /etc/init/mounted-temp.conf, mais il contient la ligne start on mounted MOUNTPOINT=/tmp qui me fait penser que ce n'est pas applicable.

8 votes

Si vous ne voulez pas qu'un fichier soit supprimé automatiquement, placez-le dans /var/tmp au lieu de /tmp.

1 votes

Il est également pratique de conserver les fichiers que vous ne voulez pas perdre (images vidéo rendues) lorsque votre machine plante, potentiellement en raison d'un manque de mémoire. Une meilleure solution serait bien sûr de résoudre le problème. :-)

68voto

pauljohn32 Points 3457

Je vérifie ceci sur Ubuntu 16.10. Je peux certifier que l'édition de /etc/default/rcS n'a plus aucun effet et que les fichiers dans tmp sont effacés après chaque redémarrage, peu importe ce que vous mettez dans ce fichier. Comme d’autres l'ont mentionné, tmpreaper n'est plus utilisé.

Je pense que la bonne réponse est qu'Ubuntu 16.10 a une nouvelle configuration. Il y a un dossier /etc/tmpfiles.d, documenté dans la page de manuel "tmpfiles.d". Dans ce dossier, on doit placer un fichier de configuration pour contrôler si le /tmp doit être effacé. C'est ce que je fais pour empêcher les redémarrages d'effacer les fichiers dans /tmp sauf s'ils ont 20 jours :

#/etc/tmpfiles.d/tmp.conf

d /tmp 1777 root root 20d

Remplacez "20d" par "-" si vous ne voulez jamais que les fichiers soient supprimés. C'est mon meilleur effort, cette page de manuel est quasi imperméable avec ses détails.

L'avantage de la nouvelle configuration est qu'un nettoyeur de fichiers peut toujours s'exécuter même si le système n'est pas redémarré (comme dans le cas d'un serveur toujours allumé). C'est un grand plus, je pense.

10 votes

homme tmpfiles.d

1 votes

J'ai découvert que vous pouvez conserver les autorisations de fichier d'origine et le propriétaire en utilisant des tirets : d /tmp/ - - - 20d

3 votes

Aussi à noter: vous pouvez tester votre configuration en exécutant manuellement le travail de nettoyage: systemctl start systemd-tmpfiles-clean

26voto

Martin Schröder Points 6325

Sur Ubuntu 14.04, cela est fait par tmpreaper, qui est appelé quotidiennement par cron (depuis /etc/cron.daily). Le programme peut être configuré via /etc/default/rcS et /etc/tmpreaper.conf.

0 votes

Sur mon système, tmpreaper n'était pas dans /etc/cron.daily -- mais j'ai pu l'installer avec apt-get.

2 votes

Note : vous NE DEVEZ PAS installer tmpreaper sur 16 et 18, car il a un système intégré

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