web-dev-qa-db-fra.com

Quand / tmp est-il effacé?

Je prends à mettre divers fichiers dans /tmp, et je me suis interrogé sur les règles de suppression?

J'imagine que c'est différent pour différentes distributions, et je suis particulièrement intéressé par les versions de bureau Ubuntu et Fedora.

Mais une belle façon générale de le découvrir serait une bonne chose.

Encore mieux serait une belle façon générale de le contrôler! (Quelque chose comme "tous les jours à 3 heures du matin, supprimez tout /tmp fichiers de plus de 60 jours, mais ne pas effacer le répertoire au redémarrage ')

156

Cela dépend de votre distribution. Sur certains systèmes, il n'est supprimé qu'au démarrage, d'autres ont des tâches cron exécutant la suppression d'éléments antérieurs à n heures.

  • Sur les systèmes de type Debian: au démarrage (les règles sont définies dans /etc/default/rcS).
  • Sur les systèmes de type RedHat: par âge (RHEL6 c'était /etc/cron.daily/tmpwatch; RHEL7/RHEL8 et RedHat-like avec systemd il est configuré dans /usr/lib/tmpfiles.d/tmp.conf, appelé par systemd-tmpfiles-clean.service).
  • Sur Gentoo /etc/conf.d/bootmisc.
171
kba

Sur CentOS (et je suppose que Fedora), il y a un travail dans /etc/cron.daily appelé tmpwatch. Cela s'exécute /usr/sbin/tmpwatch, qui supprimera les fichiers qui n'ont pas été consultés dans le nombre d'heures spécifié, c'est-à-dire que le comportement par défaut consiste à examiner le atime du fichier pour évaluer s'il a été utilisé récemment.

http://linux.die.net/man/8/tmpwatch

D'autres distributions (et installations) peuvent avoir/tmp monté en tant que tmpfs, qui est un système de fichiers en mémoire. Cela sera effacé au démarrage.

26
cjc

Sur Ubuntu 11.10 que j'utilise, il y a un script pstart dans /etc/init/mounted-tmp.conf. Le début de celui-ci dit ceci:

# mounted-tmp - Clean /tmp directory
#
# Cleans up the /tmp directory when it does not exist as a temporary
# filesystem.

description "Clean /tmp directory"

start on (mounted MOUNTPOINT=/tmp) or (mounted MOUNTPOINT=/usr)

Vous pouvez lire plus de détails, mais en général /tmp est nettoyé lorsqu'il est monté ou /usr est monté. Cela se produit régulièrement au démarrage, donc ce /tmp le nettoyage s'exécute à chaque démarrage.

Dans /etc/default/rcS vous avez TMPTIME set, qui est utilisé dans le script init ci-dessus pour alimenter les deux commandes find à sa fin - contrôlant essentiellement la suppression de fichiers en fonction de leur temps (modifié, changé, accédé) .

14
icyrock.com

Sur RHEL 6.2, les fichiers dans/tmp sont supprimés par tmpwatch s'ils n'ont pas été consultés depuis 10 jours.

Le fichier /etc/cron.daily/tmpwatch définit la façon dont tmpwatch est appelé.

#! /bin/sh
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
    -x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
    -X '/tmp/hsperfdata_*' 10d /tmp

Les arguments -x sont des fichiers à exclure. L'avant-dernier argument est le temps d'attente après le dernier accès. Le dernier argument est le répertoire à examiner.

5
johnjamesmiller

À partir de Fedora 18, /tmp est monté sur tmpfs (c.-à-d. RAM) par défaut, et donc effacé à la mise hors tension.

Ce comportement peut être désactivé en émettant systemctl mask tmp.mount et redémarrer (et réactivé en émettant systemctl unmask tmp.mount et redémarrer), puis /tmp sera monté sur le / système de fichiers et peut être contrôlé par /usr/lib/tmpfiles.d/tmp.conf réglages.

Voir http://fedoraproject.org/wiki/Features/tmp-on-tmpfs et man tmpfiles.d pour plus de détails sur chaque cas.

5

Sur openSUSE 13.2, le comportement d'effacement pouvait être contrôlé avec la variable suivante dans sysconfig.

  • MAX_DAYS_IN_TMP
  • MAX_DAYS_IN_LONG_TMP
  • TMP_DIRS_TO_CLEAR
  • LONG_TMP_DIRS_TO_CLEAR
  • OWNER_TO_KEEP_IN_TMP
  • CLEAR_TMP_DIRS_AT_BOOTUP

Vous pouvez modifier ces variables par (l'utilisation de chaque variable peut également y être trouvée)

  1. Modifiez le /etc/sysconfig/cron fichier manuellement en ligne de commande.
  2. Ouvrez Yast et accédez à Système ->/etc/sysconfig Editor -> Système -> Cron
3
leodream

Encore mieux serait une belle façon générale de le contrôler! (Quelque chose comme "tous les jours à 3 heures du matin, supprimez tous les fichiers/tmp de plus de 60 jours, mais ne videz pas le répertoire au redémarrage")

Les fichiers sorta-tempy que vous ne voulez pas effacer au démarrage vont dans/var/tmp

C'est pour ça :-)

2
nemo