Guías

Cómo ejecutar comandos periódicamente con Anacron en Linux

Cómo ejecutar comandos periódicamente con Anacron en Linux

Cuando necesitamos programar una tarea en un sistema de Linux, podemos usar servicios públicos como Cron o Systemd-Timers. Existen varias implementaciones de Cron, pero tienen en común el hecho de que se ejecutan como un servicio de sistema, y ​​están diseñados para ser utilizados en sistemas que siempre están en funcionamiento, como servidores. Cuando necesitamos programar una tarea en un escritorio o un cuaderno, que se apagan con más frecuencia, podemos usar Anacron en su lugar.

En este artículo aprendemos qué es Anacron, cuáles son las diferencias entre Anacron y Cron, y cómo usar Anacron para programar comandos en Linux.

En este tutorial aprenderás:

Requisitos y convenciones de software utilizados
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Independiente de la distribución
Software Anacron, cron
Otro Ninguno
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo Comando $: requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

Instalación

Anacron (y Cron), generalmente se instalan de forma predeterminada en todas las distribuciones de Linux, sin embargo, si por una razón u otra necesitamos instalarlas explícitamente, podemos usar los siguientes comandos. En Fedora y las otras distribuciones que forman parte de la familia Rhel, usamos el DNF Manager de paquetes para realizar la instalación de los paquetes "Cronie" y "Cronie-AnaCron" (Cronie es la implementación de Cron utilizada en esas distribuciones):

$ sudo dnf install cronie cronie-anacron



En Debian y otras distribuciones basadas en Debian, para realizar la misma operación, utilizamos el siguiente comando:
$ sudo apt instalación anacron cron

En Archlinux, Cron y Anacron no se instalan de forma predeterminada, ya que la distribución utiliza Timers SystemD como el método predeterminado para programar tareas. Instalar los paquetes, sin embargo, es solo una cuestión de iniciar el Pacman Package Manager, emitiendo el siguiente comando:

$ sudo Pacman -Sy Cronie

Anacron vs cron

Entonces, ¿cuáles son las principales diferencias entre Anacron y Cron?? En primer lugar, Cron se ejecuta como un demonio: se ejecuta en segundo plano y está destinado a programar trabajos en sistemas que se ejecutan continuamente. Con Cron podemos ajustar los tiempos de ejecución de trabajos en el orden de las actas. Anacron, por otro lado, no es un demonio, es un comando que debe ser invocado directamente: es útil programar trabajos en la máquina como escritorios o computadoras portátiles, que no se garantiza que siempre esté en funcionamiento. Con él podemos programar trabajos que deberían funcionar como máximo una vez por día.

Cómo funciona Anacron

Anacron básicamente funciona de esta manera: cuando se lanza, lee trabajos programados en el anacrontab, que es para Anacron lo que es un crontab para cron. Verifica la frecuencia en días para cada trabajo y verifica si ese trabajo se ha ejecutado en la cantidad de días especificados: esto se hace almacenando marcas de tiempo de trabajo en las llamadas llamadas spooldir, que, por defecto, es /var/spool/anacron. Si no se ha lanzado un trabajo en el número especificado de días (por ejemplo, la máquina se apagó), se ejecuta después de una cierta cantidad de Actas de retraso.



Como dijimos antes, Anacron no es un demonio, por lo que debe invocarse como un comando. En la gran mayoría de los casos, la invocación de Anacron está programada a través de Cron, por hora. En Fedora, por ejemplo, Anacron se invoca a través del /etc/cron.Hora/0anacron guion.

El anacrontab

La estructura anacrontab es diferente de la crontab clásica. El anacrontab predeterminado utilizado por cron suele ser /etc/anacrontab, Pero como veremos más adelante en este artículo, se puede especificar otros al lanzar Anacron. Un anacrontab está compuesto por cuatro columnas, que se utilizan para especificar, en orden:

  1. La frecuencia laboral en días
  2. El retraso para usar para el trabajo en minutos
  3. El identificador de trabajo
  4. El comando para ejecutar

Como ejemplo, simplemente eche un vistazo al contenido del Anacrontab predeterminado en la última versión de Fedora:

# /etc /anacrontab: archivo de configuración para Anacron # Consulte Anacron (8) y Anacrontab (5) para más detalles. Shell =/bin/sh path =/sbin:/bin:/usr/sbin:/usr/bin mailto = root # El retraso aleatorio máximo agregado al retraso base de los trabajos random_delay = 45 # Los trabajos se iniciarán durante el siguientes horas solo inicio_hours_range = 3-22 #Período En días de retraso en minutos Comando de identificador de trabajo 1 5 Cron.Parts de ejecución de Niza Daily Nice /Etc /Cron.diario 7 25 Cron.Parts de ejecución de Nice Weekly Nice /Etc /Cron.semanal @monthly 45 cron.Parts de ejecución mensuales de Niza /Etc /Cron.mensual 

Como podemos ver, aparte de las especificaciones de trabajos, el anacrontab contiene también algunas variables de entorno. El CAPARAZÓN y CAMINO Las variables se explican bastante por sí mismas: identifican qué shell debe usarse como intérprete y el CAMINO para ser utilizado, respectivamente.

El Mailto La variable se utiliza para especificar la dirección de correo a la que se debe enviar un correo que contenga comandos de salida (el valor predeterminado es enviar el correo electrónico al propietario del anacrontab, root en este caso). Para que esto funcione, un servicio como enviar correo debe configurarse en el sistema. Para deshabilitar esta funcionalidad, solo podemos asignar un valor vacío a la variable (e.gramo Mailto= "").



El Random_delay La variable especifica el número máximo de minutos que se agregan aleatoriamente a cada retraso del trabajo; Para deshabilitar esta función, simplemente podemos establecer 0 como un valor. Finalmente, el Start_hours_range La variable se usa para definir un intervalo de hora en el que los trabajos pueden funcionar. Aquí debemos elegir un rango de horas durante el cual estamos seguros de que la máquina se encenderá.

Veamos cómo se especifican los trabajos. En la primera columna, Como ya vimos, podemos encontrar la frecuencia de ejecución para cada trabajo, especificada en días. Aquí podemos usar un entero directamente o usar una macro como @a diario, @semanalmente o @mensual.

El segunda columna contiene el retraso que se utilizará para el trabajo, especificado en minutos. El retraso se aplica cuando se invoca anacron y decide que el comando debe ejecutarse.

El tercera columna Contiene el identificador que se utiliza para referirse a las tareas en los archivos de registro. Finalmente, el cuarto y la última columna contiene el comando que debe ejecutarse. Este puede ser un comando directo, o la ruta a un script.

Cómo programar trabajos con Anacron como usuarios no privilegiados

Como ya mencionamos en este tutorial, los comandos programados con Anacron se ejecutan como root, y se definen en el sistema Anacrontab, que es /etc/anacrontab. Las marcas de tiempo de trabajo, en cambio, se almacenan en el /var/spool/anacron directorio. Para poder usar Anacron como un usuario no privilegiado, necesitamos crear el equivalente por usuario de esos archivos. Nuestro horario de trabajo se guardará en el ~/.local/etc/anacrontab directorio, y crearemos y usaremos el ~/.local/var/spool/anacron Directorio para almacenar marcas de tiempo de trabajo definidas en él:

$ mkdir -p ~/.local/var/spool/anacron

Como taquigrafía, podemos copiar el sistema anacrontab localmente y modificarlo como nos gusta:

$ mkdir -p ~/.local/etc && cp/etc/anacrontab ~/.local/etc

Es posible que deseemos cambiar el valor de algunas de las variables contenidas en el anacrontab, como el de Mailto. Ahora podemos definir nuestros horarios de trabajo dentro del anacrontab local. Como último paso, debemos asegurarnos de que Anacron sea invocado por hora. Para lograr la tarea, podemos crear una entrada en nuestro crontab local. Para editar nuestro crontab local ejecutamos el siguiente comando:

$ crontab -e



Tan pronto como ejecutamos el comando anterior, nuestro crontab personal se abre con nuestro editor de texto predeterminado. Para ejecutar Anacron al comienzo de cada hora, dentro de ella, agregamos la siguiente línea:
0 * * * */usr/sbin/anacron -s -t "$ home/.local/etc/anacrontab "-s" $ home/.local/var/spool/anacron "

En la entrada, invocamos a Anacron con el -s opción, de modo que los trabajos programados se ejecutan secuencialmente, uno tras otro. Para especificar el archivo que queremos usar como anacrontab, usamos el -T opción y pasar la ruta del archivo como argumento. Finalmente, usamos el -S Opción para especificar el directorio que debe usarse para almacenar marcas de tiempo de trabajo.

Conclusiones

En este tutorial aprendimos a usar Anacron para programar trabajos en sistemas que, a diferencia de los servidores, no se garantizan que siempre se ejecutarán. Vimos brevemente las diferencias entre Anacron y Cron, cómo instalar Anacron en algunas de las distribuciones de Linux más utilizadas, cómo funciona Anacron y cómo se organiza un anacrontab. Finalmente, vimos cómo implementar una instancia de Anacron no privilegiada por usuario.

Página de SCP-manual
Nombre SCP-Copia segura (programa de copia de archivo remoto) Sinopsis SCP [-12346BCPQRV] [-c cifrado] [-f ssh_config] [-i identity_file] [-l límite] ...
Atajos de teclado de eclipse de Android
Se recomienda usar el Eclipse IDE como un entorno de desarrollo de aplicaciones de Android. Eclipse IDE integra bien un SDK de Android en......
El NTOP 10TOP 10 ingresando una interfaz de comando Redboot Boot Loader
Si posee un almacenamiento NAS THECUS 2100 y debe recuperarse de algún accidente de software, tiene dos opciones. Uno es usar un conector serie USB o....