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 ')
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.
/etc/default/rcS
)./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
)./etc/conf.d/bootmisc
.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.
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é) .
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.
À 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.
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)
/etc/sysconfig/cron
fichier manuellement en ligne de commande.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 :-)