Dans CentOS/RHEL 7, tmpfiles nettoie /tmp ou /var/tmp en supprimant les fichiers inutilisés. Cette fonction s'appelait "tmpwatch " dans CentOS/RHEL 6 qui est invoqué par crond, cependant, il est maintenant réalisé par la minuterie de systemd sur CentOS/RHEL 7.
Actuellement, les fonctions détaillées des fichiers tmp sont décrites dans les fichiers de configuration :
/usr/lib/systemd/system/systemd-tmpfiles-clean.timer /usr/lib/systemd/system/systemd-tmpfiles-clean.service /usr/lib/tmpfiles.d/tmp.conf
En bref, les fonctions disponibles sont :
- suppression de fichiers/répertoires dans /tmp non consulté plus de 10 jours (défini dans tmp.conf )
- suppression de fichiers/répertoires dans /var/tmp non consulté plus de 30 jours (défini dans tmp.conf )
- il y a plusieurs fichiers qui ne seront pas supprimés (définis dans tmp.conf)
- la commande de suppression est "/usr/bin/systemd-tmpfiles –clean "(défini dans systemd-tmpfiles-clean.service )
"inaccessible ” est décidé en cochant tout atime /heure /ctime du fichier/répertoire. Ainsi, dans le cas où même l'un des atime/mtime/ctime d'un fichier dans /tmp/ est plus récent que 10 jours, le fichier ne sera pas supprimé. Si un fichier/répertoire dans /tmp/ n'est pas supprimé par tmpfiles même s'il semble qu'il date de plus de 10 jours, la raison peut être vérifiée en exécutant manuellement une commande avec les options de débogage comme ci-dessous :
# SYSTEMD_LOG_TARGET=console SYSTEMD_LOG_LEVEL=debug /usr/bin/systemd-tmpfiles --clean
Par exemple, ci-dessous signifie qu'un répertoire "/tmp/latest" ne peut pas être supprimé en raison de son atime.
# SYSTEMD_LOG_TARGET=console SYSTEMD_LOG_LEVEL=debug /usr/bin/systemd-tmpfiles --clean 2>&1 | grep latest Directory "/tmp/latest": access time Wed 2017-12-06 16:56:28.771577 IST is too new
Exemples de fichiers de configuration
Vous trouverez ci-dessous les 3 exemples de fichiers de configuration (non modifiés) avec leurs paramètres par défaut.
# cat /usr/lib/systemd/system/systemd-tmpfiles-clean.timer [Unit] Description=Daily Cleanup of Temporary Directories Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8) [Timer] OnBootSec=15min OnUnitActiveSec=1d
# cat /usr/lib/tmpfiles.d/tmp.conf # Clear tmp directories separately, to make them easier to override v /tmp 1777 root root 10d v /var/tmp 1777 root root 30d # Exclude namespace mountpoints created with PrivateTmp=yes x /tmp/systemd-private-%b-* X /tmp/systemd-private-%b-*/tmp x /var/tmp/systemd-private-%b-* X /var/tmp/systemd-private-%b-*/tmp
# cat /usr/lib/systemd/system/systemd-tmpfiles-clean.service [Unit] Description=Cleanup of Temporary Directories Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8) DefaultDependencies=no Conflicts=shutdown.target After=systemd-readahead-collect.service systemd-readahead-replay.service local-fs.target time-sync.target Before=shutdown.target [Service] Type=oneshot ExecStart=/usr/bin/systemd-tmpfiles --clean IOSchedulingClass=idle