Quand / tmp est-il effacé?

143

Je commence à mettre divers fichiers /tmpet je me suis demandé quelles étaient les règles pour les supprimer?

J'imagine que c'est différent pour différentes distributions et je m'intéresse particulièrement aux versions de bureau Ubuntu et Fedora.

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

Mieux encore, ce serait un bon moyen général de le contrôler! (Quelque chose comme "tous les jours à 3 heures du matin, supprimez tous les /tmpfichiers de plus de 60 jours, mais n'effacez pas le répertoire au redémarrage")

John Lawrence Aspden
la source
Connexes: askubuntu.com/questions/20783/…
Ciro Santilli a rejoint le forum

Réponses:

155

Cela dépend de votre distribution. Sur certains systèmes, il est supprimé uniquement au démarrage, tandis que d'autres utilisent des tâches cron pour supprimer les éléments de plus de 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 le cas /etc/cron.daily/tmpwatch; RHEL7 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.
kba
la source
19
Et peu importe le moment où cela se produit, le seul moment sûr est généralement au démarrage, juste après le montage, car les processus en cours peuvent avoir des fichiers verrouillés à cet endroit et ceux-ci ne doivent pas être supprimés.
Adaptr
Il existe également des packages disponibles qui peuvent les supprimer périodiquement.
Samuel Edwin Ward
2
Sur les systèmes de type RedHat avec systemd (centos7 / rhel7), il est configuré dans /usr/lib/tmpfiles.d/tmp.conf. C'est appelé par la cible de systemd systemd-tmpfiles-clean.service.
Franklin Piat
1
Sur l'ancienne version de Debian, vous pouvez envisager un tmpreaperpaquet, sa version fourchue de tmpwatch.
Věroš K.
Ubuntu 19.04:cat: /etc/default/rcS: No such file or directory
Boris
24

Sur CentOS (et je suppose Fedora), il existe un travail dans /etc/cron.daily appelé tmpwatch. Cela s'exécute /usr/sbin/tmpwatch, ce qui supprime les fichiers qui n'ont pas été consultés dans le nombre d'heures spécifié. En d'autres termes, le comportement par défaut consiste à examiner atimele fichier pour déterminer s'il a été utilisé récemment.

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

Les 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.

cjc
la source
Je n'ai pas ceci sur CentOS 7.4.
Kevin Lemaire
@KevinLemaire La fonctionnalité a été déplacée dans un service systemd. lists.centos.org/pipermail/centos/2014-October/147155.html
cjc
Si vous n'avez pas trouvé le fichier tmpwatch, vous pouvez télécharger tmpwatch en utilisantyum install tmpwatch
Ng Sek Long
Puis-je obtenir tmpwatch sur d'autres distributions? Ça a l'air génial. Je suis sur la distribution debian
Jonathan
sudo find /tmp -type f -atime +10 -deletesupprimera les fichiers tmp qui n'ont pas été utilisés depuis 10 jours, utilisez-les avec précaution
Jonathan
13

Sur Ubuntu 11.10 que j’utilise, il y a un script de démarrage 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, /tmpest nettoyé quand il est monté ou /usrest monté. Cela se produit régulièrement au démarrage, ce /tmpnettoyage est donc exécuté à chaque démarrage.

Dans /etc/default/rcSvous avez TMPTIMEdéfini, qui est utilisé dans le script init ci-dessus pour alimenter les deux findcommandes à sa fin - contrôlant essentiellement la suppression des fichiers en fonction de leur temps (modifié, modifié, utilisé ).

icyrock.com
la source
5

Sous RHEL 6.2, les fichiers de / 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 manière 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. Le deuxième à dernier argument est le délai d'attente après le dernier accès. Le dernier argument est le répertoire à examiner.

johnjamesmiller
la source
5

À partir de Fedora 18, /tmpest 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.mountet en redémarrant (et réactivé en émettant systemctl unmask tmp.mountet en redémarrant), puis /tmpsera monté sur le /système de fichiers et peut être contrôlé par les /usr/lib/tmpfiles.d/tmp.confparamètres.

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

Skippy le Grand Gourou
la source
3

Sur openSUSE 13.2, le comportement de nettoyage pourrait ê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 en (vous pouvez également y trouver l'utilisation de chaque variable)

  1. Editez le /etc/sysconfig/cronfichier manuellement en ligne de commande.
  2. Ouvrez Yast et naviguez dans Système -> / etc / sysconfig Editor -> Système -> Cron
leodream
la source
2

Mieux encore, ce serait un bon moyen général de le contrôler! (Quelque chose comme "tous les jours à 3 heures du matin, supprimez tous les fichiers / tmp antérieurs à 60 jours, mais n'effacez pas le répertoire au redémarrage")

Les fichiers triés-temporaires que vous ne voulez pas effacer au démarrage vont dans / var / tmp

C'est pour ça :-)

Nemo
la source