En CentOS/RHEL 7, tmpfiles limpia /tmp o /var/tmp eliminando archivos no utilizados. Esta función se llamó “tmpwatch ” en CentOS/RHEL 6 que es invocado por crond, sin embargo, ahora lo realiza el temporizador de systemd en CentOS/RHEL 7.
Actualmente, las funciones detalladas de tmpfiles se describen en los archivos de configuración:
/usr/lib/systemd/system/systemd-tmpfiles-clean.timer /usr/lib/systemd/system/systemd-tmpfiles-clean.service /usr/lib/tmpfiles.d/tmp.conf
En resumen, las funciones disponibles son:
- eliminación de archivos/directorios en /tmp sin acceso durante más de 10 días (definido en tmp.conf )
- eliminar archivos/directorios en /var/tmp sin acceso durante más de 30 días (definido en tmp.conf )
- hay varios archivos que no se eliminarán (definidos en tmp.conf)
- el comando de eliminación es “/usr/bin/systemd-tmpfiles –clean “(definido en systemd-tmpfiles-clean.service )
“sin acceso ” se decide comprobando todo atime /mtime /ctime del archivo/directorio. Por lo tanto, en caso de que uno de atime/mtime/ctime de un archivo en /tmp/ tenga más de 10 días, el archivo no se eliminará. Si un archivo/directorio en /tmp/ no es eliminado por tmpfiles incluso si parece que tiene más de 10 días, la razón puede verificarse ejecutando un comando con opciones de depuración como las siguientes manualmente:
# SYSTEMD_LOG_TARGET=console SYSTEMD_LOG_LEVEL=debug /usr/bin/systemd-tmpfiles --clean
Por ejemplo, a continuación se indica que un directorio "/tmp/latest" no se puede eliminar debido a su hora.
# 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
Archivos de configuración de muestra
A continuación se encuentran los 3 archivos de configuración de muestra (sin editar) con sus configuraciones predeterminadas.
# 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