martes, 16 de julio de 2024

Script para automatizar la limpieza con BleachBit en antiX

Script: clean_with_bleachbit.sh


BleachBit . Personalmente yo la uso con antiX. Algunas características que lo hacen interesante:

  • Limpieza profunda: BleachBit es conocido como "el CCleaner para Linux" por su capacidad de limpiar profundamente los sistemas, eliminando cachés, registros, cookies, archivos temporales y más.
  • Soporte para múltiples aplicaciones: Puede limpiar archivos y cachés de una amplia gama de aplicaciones, como navegadores web, suites de oficina y programas de mensajería.
  • Interfaz gráfica y de línea de comandos: Ofrece una interfaz gráfica sencilla y también puede ser usado desde la línea de comandos, lo que lo hace versátil para diferentes tipos de usuarios.
  • Desfragmentación y trituración de archivos: Puede desfragmentar archivos y triturar archivos para una eliminación segura.
Interface de BleachBit

Ventajas:

  • Eficiencia: Es ligero y consume pocos recursos del sistema.
  • Potencia en la limpieza: Se enfoca específicamente en la limpieza y lo hace de manera efectiva.
  • Flexibilidad: La opción de usarlo desde la línea de comandos lo hace adecuado para scripts y automatización . Aca les dejo un ejemplo de como podría ser incorporado a un script (este script opcionalmente luego podría ser incorporado como una tarea administrativa a través de cron).

Código


#!/bin/bash
# --------------------------------------------------------------------------------------------------------------------------------------
# File: clean_with_bleachbit.sh
# By Julio Alberto Lascano http://drcalambre.blogspot.com/
#________          _________        .__                ___.                  
#\______ \_______  \_   ___ \_____  |  | _____    _____\_ |_________   ____  
# |    |  \_  __ \ /    \  \/\__  \ |  | \__  \  /     \| __ \_  __ \_/ __ \ 
# |    `   \  | \/ \     \____/ __ \|  |__/ __ \|  Y Y  \ \_\ \  | \/\  ___/ 
#/_______  /__|     \______  (____  /____(____  /__|_|  /___  /__|    \___  >
#        \/                \/     \/          \/      \/    \/            \/ 
# --------------------------------------------------------------------------------------------------------------------------------------
# Last modified:2024-07-14
# --------------------------------------------------------------------------------------------------------------------------------------

# Script para automatizar la limpieza con BleachBit
# Asegúrate de tener BleachBit instalado y configurado para ejecutarse desde la línea de comandos

# Configurar las opciones de limpieza de BleachBit
# Puedes encontrar la lista completa de opciones en la documentación de BleachBit o usando `bleachbit --list`

# Lista de opciones de limpieza
options=(
    "apt.autoclean"
    "apt.clean"
    "system.cache"
    "system.tmp"
    "chromium.cache"
    "chromium.dom"
    "chromium.history"
    "chromium.form_history"
    "chromium.search_engines"
    "chromium.sync"
    "chromium.vacuum"
    "firefox.cache"
    "firefox.crash_reports"
    "firefox.dom"
    "firefox.forms"
    "firefox.session_restore"
    "firefox.site_preferences"
    "firefox.vacuum"
    "google_chrome.cache"
    "google_chrome.dom"
    "google_chrome.history"
    "google_chrome.search_engines"
    "google_chrome.vacuum"
)   

# Función para ejecutar la limpieza
run_bleachbit() {
    for option in "${options[@]}"; do
        echo "Limpiando $option"
        bleachbit --clean "$option"
    done
}

# Ejecutar la función de limpieza
run_bleachbit

# Salida del script
echo "Limpieza completada con BleachBit"

Guardar el script en:


 
/usr/local/bin/clean_with_bleachbit.sh

Dar permisos de ejecución al script


chmod +x /usr/local/bin/clean_with_bleachbit.sh

Implementación con CRON

# Editar el archivo crontab para el usuario actual


(crontab -l 2>/dev/null; echo "0 2 * * * /usr/local/bin/clean_with_bleachbit.sh >> /var/log/bleachbit.log 2>&1") | crontab -

En el ejemplo de cron proporcionado programará la ejecución del script clean_with_bleachbit.sh todos los días a las 2:00 AM. Explicación del Cronograma

0 2 * * *: Esta parte del cronograma especifica los momentos en que se ejecutará el script.
0: El minuto en que se ejecutará la tarea (0 significa en el minuto cero de la hora especificada).
2: La hora en que se ejecutará la tarea (2 significa a las 2:00 AM).
*: Cualquier día del mes.
*: Cualquier mes.
*: Cualquier día de la semana.
Interpretación
Minuto (0): El script se ejecutará al minuto 0 de la hora especificada (es decir, al principio de la hora).
Hora (2): El script se ejecutará a las 2:00 AM.
Día del Mes (*): Se ejecutará cualquier día del mes.
Mes (*): Se ejecutará cualquier mes.
Día de la Semana (*): Se ejecutará cualquier día de la semana.
Verificación Después de ejecutar el comando anterior, puedes verificar que la tarea cron se haya configurado correctamente utilizando el siguiente comando:


crontab -l

Implementación con ANACRON

Usar anacron en lugar de cron para tu script de limpieza con BleachBit puede ofrecer varias ventajas, especialmente si estás en un entorno donde el equipo no está encendido constantemente o en horarios específicos.

Aquí están algunas de las ventajas:
  • Ejecución Garantizada: anacron garantiza que las tareas programadas se ejecuten incluso si el equipo estuvo apagado durante el horario programado. En contraste, cron solo ejecuta tareas en momentos específicos y las tareas se pierden si el equipo no está encendido.
  • Flexibilidad de Horarios: anacron permite definir periodos en días para la ejecución de tareas (e.g., diario, semanal, mensual) sin necesidad de especificar una hora exacta, lo que ofrece mayor flexibilidad para equipos que no están siempre encendidos.
  • Fácil Configuración para Tareas Periódicas: Para tareas que necesitan ejecutarse al menos una vez al día, anacron es una opción más sencilla y robusta. En lugar de depender de un cronjob que puede no ejecutarse si el sistema está apagado, anacron simplemente ejecuta la tarea la próxima vez que el sistema esté encendido.
  • Manejo Automático de Retrasos: Si una tarea se retrasa (por ejemplo, porque el equipo estuvo apagado en el momento programado para la ejecución), anacron se encargará de ejecutarla la próxima vez que el equipo esté encendido. Esto asegura que las tareas críticas no se pierdan simplemente porque el equipo no estaba disponible en el momento exacto de la programación, a diferencia de cron, que no reprograma tareas perdidas.

El COMO usar anacron con un usuario común, aunque requiere algunos pasos adicionales en comparación con cron. A continuación, una explicacíon cómo configurar anacron para un usuario común.

Instalar anacron.

Primero, asegúrate de que anacron esté instalado en tu sistema. En la mayoría de las distribuciones basadas en Debian/Ubuntu, puedes instalarlo con:.


sudo apt-get install anacron

Crear Directorios y Archivos de Configuración

anacron generalmente se configura a nivel de sistema, pero puedes configurarlo para un usuario común creando los directorios y archivos necesarios en tu directorio de inicio.

Crear Directorios:

Crea un directorio ~/.anacron para almacenar los archivos de estado de anacron:



mkdir -p ~/.anacron

Crear el Archivo de Tareas:

Crea un archivo llamado anacrontab en tu directorio de inicio:



touch ~/.anacron/anacrontab

Luego, edita este archivo con tu editor de texto preferido y añade la configuración de la tarea. Por ejemplo, para ejecutar el script de limpieza con BleachBit diariamente:


# archivo de configuración para anacron
# formato: periodo   demora   identificador   comando
# Trabajo diario
1       5       clean_with_bleachbit   /usr/local/bin/clean_with_bleachbit.sh >> /var/log/bleachbit.log 2>&1 && echo "---- $(date) ----" >> /var/log/bleachbit.log

Este ejemplo configura anacron para ejecutar el script clean_with_bleachbit.sh diariamente.

  • 1: Especifica que el trabajo debe ejecutarse diariamente.
  • 5 clean_with_bleachbit: Esto significa que el trabajo se ejecutará 5 minuto después de que anacron se inicie.
  • /usr/local/bin/clean_with_bleachbit.sh: Es el script que se va a ejecutar.
  • >> /var/log/bleachbit.log: Redirige la salida estándar (stdout) del script al archivo /var/log/bleachbit.log. El operador >> añade la salida al final del archivo sin sobrescribirlo.
  • 2>&1: Redirige la salida de error estándar (stderr) al mismo lugar que la salida estándar (stdout).

Desglose de 2>&1

  • 2 representa el descriptor de archivo para stderr.
  • > es el operador de redirección.
  • &1 significa que stderr se redirigirá al mismo lugar que stdout.

Crear un Script para Ejecutar anacron

Para asegurarte de que anacron se ejecute regularmente, incluso si el equipo se apaga, puedes crear un script que ejecute anacron cada vez que inicies sesión o se inicie el entorno de escritorio.

Crear el Script:

Crea un archivo llamado run_anacron.sh en tu directorio de inicio:



touch ~/run_anacron.sh

Luego, edita este archivo y añade lo siguiente:


#!/bin/bash

# Esperar 1 minuto para asegurar que el entorno esté listo
sleep 60

# Registro adicional para depuración
echo "Running Anacron script at $(date)" > ~/anacron_debug.log
echo "Current user: $(whoami)" >> ~/anacron_debug.log
echo "Current directory: $(pwd)" >> ~/anacron_debug.log
echo "Environment variables: $(env)" >> ~/anacron_debug.log
echo "Anacron status before execution:" >> ~/anacron_debug.log
/sbin/anacron -T -t ~/.anacron/anacrontab >> ~/anacron_debug.log 2>&1

# Ejecutar Anacron
/sbin/anacron -t ~/.anacron/anacrontab -S ~/.anacron -s
exit_code=$?

# Verificar el código de salida y registrar en el log
if [ $exit_code -eq 0 ]; then
    echo "Starting Anacron at $(date)" > ~/anacron_log.log
else
    echo "Anacron failed to start at $(date) with exit code $exit_code" > ~/anacron_log.log
fi

# Registrar el estado después de la ejecución
echo "Anacron status after execution:" >> ~/anacron_debug.log
/sbin/anacron -T -t ~/.anacron/anacrontab >> ~/anacron_debug.log 2>&1

Ejecutar anacron al Iniciar Sesión

Finalmente, configura tu entorno para ejecutar anacron al iniciar sesión. Puedes agregar el script run_anacron.sh a tus aplicaciones de inicio.

Para GNOME, por ejemplo:

  • Abre "Aplicaciones de inicio" (Startup Applications).
  • Añade una nueva entrada: Nombre: anacron
  • Comando: /home/tu_usuario/run_anacron.sh
    Comentario: Ejecutar tareas de anacron
  • Resumen: Siguiendo estos pasos, puedes usar anacron con un usuario común para ejecutar tareas programadas, asegurándote de que se ejecuten incluso si el equipo estuvo apagado durante el tiempo programado.

Además de estas variantes predefinidas, puedes definir tareas usando un formato más detallado, especificando el número de días entre ejecuciones. Aquí tienes algunos ejemplos adicionales:

Variantes de anacron

  • Especificar el Número de Días
    • Puedes especificar cualquier número de días entre ejecuciones.
    • Formato: [número de días] [demora en minutos] [identificador] [comando]
    • Ejemplo para ejecutar cada 3 días:
      
              
      3 1 clean_with_bleachbit /usr/local/bin/clean_with_bleachbit.sh >> /var/log/bleachbit.log 2>&1
              
              

Ejemplos Adicionales

  • Ejecutar Cada 2 Días:
    
        
    2 1 clean_temp_files /usr/local/bin/clean_temp_files.sh >> /var/log/clean_temp_files.log 2>&1
        
        
  • Ejecutar Cada 10 Días:
    
        
    10 1 backup_data /usr/local/bin/backup_data.sh >> /var/log/backup_data.log 2>&1
        
        

Sintaxis del Archivo anacrontab

Cada línea en el archivo anacrontab sigue esta sintaxis:

[periodo] [demora en minutos] [identificador] [comando]
  • periodo: Número de días entre ejecuciones.
  • demora en minutos: Tiempo de espera antes de ejecutar la tarea después de iniciar anacron.
  • identificador: Un nombre único para identificar la tarea.
  • comando: El comando o script a ejecutar.

Archivo ~/.anacron/anacrontab con Varias Tareas


# archivo de configuración para anacron
# formato: periodo   demora   identificador   comando
# Trabajo diario
1       5       clean_with_bleachbit   /usr/local/bin/clean_with_bleachbit.sh >> /var/log/bleachbit.log 2>&1
# Trabajo semanal
7       1       clean_logs             /usr/local/bin/clean_logs.sh >> /var/log/clean_logs.log 2>&1
# Trabajo mensual
30      30      system_backup          /usr/local/bin/system_backup.sh >> /var/log/system_backup.log 2>&1
# Otros trabajos
3       1       clean_temp_files       /usr/local/bin/clean_temp_files.sh >> /var/log/clean_temp_files.log 2>&1
10      1       backup_data            /usr/local/bin/backup_data.sh >> /var/log/backup_data.log 2>&1

Estas configuraciones permiten una gran flexibilidad en la programación de tareas periódicas, asegurando que se ejecuten incluso si el sistema no está encendido en el momento exacto programado.