In CentOS/RHEL 7, tmpfiles pulisce /tmp o /var/tmp rimuovendo i file inutilizzati. Questa funzione è stata chiamata "tmpwatch ” in CentOS/RHEL 6 che viene invocato da crond, tuttavia, ora è realizzato dal timer di systemd su CentOS/RHEL 7.
Attualmente le funzioni dettagliate di tmpfiles sono descritte nei file di configurazione:
/usr/lib/systemd/system/systemd-tmpfiles-clean.timer /usr/lib/systemd/system/systemd-tmpfiles-clean.service /usr/lib/tmpfiles.d/tmp.conf
In breve, le funzioni disponibili sono:
- rimuovere file/directory in /tmp non accessibile per più di 10 giorni (definito in tmp.conf )
- rimuovere file/directory in /var/tmp non accessibile per più di 30 giorni (definito in tmp.conf )
- ci sono diversi file che non verranno rimossi (definiti in tmp.conf)
- il comando di rimozione è "/usr/bin/systemd-tmpfiles –clean “(definito in systemd-tmpfiles-clean.service )
"non accessibile ” viene deciso selezionando tutto atime /l'ora /ora del file/directory. Pertanto, nel caso in cui anche uno di atime/mtime/ctime di un file in /tmp/ sia più recente di 10 giorni, il file non verrà rimosso. Se un file/directory in /tmp/ non viene rimosso da tmpfiles anche se sembra essere più vecchio di 10 giorni, il motivo può essere verificato eseguendo manualmente un comando con opzioni di debug come di seguito:
# SYSTEMD_LOG_TARGET=console SYSTEMD_LOG_LEVEL=debug /usr/bin/systemd-tmpfiles --clean
Ad esempio, di seguito si intende che una directory "/tmp/latest" non può essere rimossa a causa del suo tempo.
# 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
File di configurazione di esempio
Di seguito sono riportati i 3 file di configurazione di esempio (non modificati) con le loro impostazioni predefinite.
# 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