Búsqueda de sitios web

Limpiar automáticamente archivos temporales no utilizados en Linux |


¿Cómo puedo eliminar/limpiar archivos no utilizados en Linux? En este artículo, aprenderá cómo configurar un temporizador que administre archivos temporales. En la mayoría de los sistemas Linux modernos, se requiere una gran cantidad de archivos y directorios temporales para un procesamiento óptimo. En conjunto, podrían consumir gigabytes de espacio de almacenamiento si no se limpian con frecuencia. Por lo tanto, es necesario eliminar los archivos antiguos para que no ocupen espacio en el disco.

Algunos usuarios/aplicaciones usarán el directorio /tmp para almacenar datos temporales, mientras que otros usan una ubicación más específica de la tarea, como un demonio y directorios volátiles específicos del usuario en /run. . Volátil significa que los archivos sólo existen en la memoria. Si se reinicia el sistema o cuando hay una pérdida de energía, todo el contenido del almacenamiento volátil desaparecerá.

Limpiar automáticamente archivos temporales no utilizados en Linux

En Red Hat Enterprise Linux 7 y versiones posteriores, se incluye una nueva herramienta llamada systemd-tmpfiles . Esta herramienta proporciona un método estructurado y configurable para administrar directorios y archivos temporales.

Puede verificar los servicios iniciados con el comando:

$ systemctl status  systemd-tmpfiles-*
● systemd-tmpfiles-clean.timer - Daily Cleanup of Temporary Directories
     Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-clean.timer; static)
     Active: active (waiting) since Mon 2023-08-28 17:12:25 EDT; 21h ago
    Trigger: Tue 2023-08-29 17:27:29 EDT; 2h 24min left
   Triggers: ● systemd-tmpfiles-clean.service
       Docs: man:tmpfiles.d(5)
             man:systemd-tmpfiles(8)

Aug 28 17:12:25 fedora systemd[1]: Started systemd-tmpfiles-clean.timer - Daily Cleanup of Temporary Directories.

● systemd-tmpfiles-setup.service - Create Volatile Files and Directories
     Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-setup.service; static)
    Drop-In: /usr/lib/systemd/system/service.d
             └─10-timeout-abort.conf
     Active: active (exited) since Mon 2023-08-28 17:12:25 EDT; 21h ago
       Docs: man:tmpfiles.d(5)
             man:systemd-tmpfiles(8)
   Main PID: 477 (code=exited, status=0/SUCCESS)
        CPU: 62ms

Aug 28 17:12:25 fedora systemd[1]: Starting systemd-tmpfiles-setup.service - Create Volatile Files and Directories...
Aug 28 17:12:25 fedora systemd[1]: Finished systemd-tmpfiles-setup.service - Create Volatile Files and Directories.

● systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev
     Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-setup-dev.service; static)
    Drop-In: /usr/lib/systemd/system/service.d
             └─10-timeout-abort.conf
     Active: active (exited) since Mon 2023-08-28 17:12:24 EDT; 21h ago
       Docs: man:tmpfiles.d(5)
             man:systemd-tmpfiles(8)
   Main PID: 424 (code=exited, status=0/SUCCESS)
        CPU: 26ms

Aug 28 17:12:24 fedora systemd[1]: Starting systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev...
Aug 28 17:12:24 fedora systemd[1]: Finished systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev.

Cuando se inicia la unidad de servicio systemd-tmpfiles-setup, ejecuta el comando systemd-tmpfiles –create –remove. El comando busca archivos de configuración de:

  • /usr/lib/tmpfiles.d/.conf
  • /run/tmpfiles.d/.conf
  • /etc/tmpfiles.d/*.conf

Si hay archivos y directorios marcados para eliminar en los archivos de configuración anteriores, se eliminarán. Para los archivos y directorios marcados para su creación, se crean con los permisos correctos si es necesario.

Cómo se limpian los archivos temporales con un temporizador Systemd

Una unidad de temporizador systemd llamada systemd-tmpfiles-clean.timer activa el systemd-tmpfiles-clean.service en un intervalo regular, que luego ejecuta los systemd-tmpfiles –comando limpiar.

Especificarás con qué frecuencia se debe iniciar el servicio en la sección [Temporizador] . Vea el ejemplo a continuación.

$ cat /usr/lib/systemd/system/systemd-tmpfiles-clean.timer
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Daily Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)

[Timer]
OnBootSec=15min
OnUnitActiveSec=1d

En el ejemplo anterior, el systemd-tmpfiles-clean.service se activará 15 minutos después de que el sistema se haya iniciado. Cualquier otra activación ocurre 24 horas después de la última activación del servicio. Puedes ajustar los valores a tu gusto.

Si realiza un cambio, asegúrese de recargar el servicio.

sudo systemctl daemon-reload
sudo systemctl enable --now systemd-tmpfiles-clean.timer

Cómo limpiar manualmente archivos temporales

Configuremos systemd-tmpfiles para limpiar el directorio /mytmp. Esto garantizará que el directorio no contenga archivos que no se hayan utilizado en los últimos 3 días.

Puede copiar el archivo de configuración de ejemplo y actualizarlo: /usr/lib/tmpfiles.d/tmp.conf

Edite el archivo como se muestra a continuación.

$ sudo vim /etc/tmpfiles.d/mytmp.conf
See tmpfiles.d(5) for details
# Clear tmp directories separately, to make them easier to override
q /mytmp 1777 root root 3d

Si desea asegurarse de que exista un directorio con la propiedad correcta, cree una configuración como la siguiente.

d /run/mytmp 0700 root root 60s

Cualquier archivo de este directorio que no se utilice en los últimos 60 segundos debe eliminarse.

Una vez creado el archivo, utilice el siguiente comando para asegurarse de que el archivo contenga la configuración adecuada.

sudo systemd-tmpfiles --create /etc/tmpfiles.d/mytmp.conf

Si no ve ningún error en el resultado, confirma que los ajustes de configuración son correctos. Puedes invocar una limpieza manual en cualquier momento con el comando:

systemd-tmpfiles --clean /etc/tmpfiles.d/mytmp.conf

Consulte las siguientes páginas de manual para obtener más detalles.

  • archivos tmp.d (5)
  • archivos systemd-tmp (8),
  • systemd.temporizador (5)

Libros recomendados sobre Linux

  • Los mejores libros de Linux para principiantes y expertos
  • Los mejores libros de programación del kernel de Linux
  • Los mejores libros sobre secuencias de comandos de Linux Bash

Más lectura:

  • Los mejores libros para prepararse para el examen de certificación CRISC
  • Los mejores libros de estudio de Certified Information Security Manager (CISM)

Artículos relacionados: