07.06.2023

Cómo automatizar tareas regulares con Cron en CentOS 8

Cron es un servicio que se ejecuta en segundo plano y lanza tareas configuradas en un horario. Esto lo hace muy útil para el mantenimiento del servidor. En este tutorial, veremos cómo automatizar tareas comunes usando cron en CentOS 8.

Instalando cron en CentOS 8

Cron está presente en CentOS 8 por defecto. Si por alguna razón no está allí, puede instalarlo con el comando:

dnf instalar crontabs

Ahora vamos a ejecutarlo y agregarlo al inicio:

systemctl habilitar --ahora crond.servicio

Configuración básica de cron

Para afinar el tiempo y la frecuencia de ejecución de las tareas, existe la crontab dominio. Hablaremos de eso más tarde. Además, existen las siguientes carpetas para facilitar la adición de tareas:

  • /etc/cron.por hora
  • /etc/cron.daily
  • /etc/cron.semanal
  • /etc/cron.mensual

Los scripts ubicados en ellos se ejecutan con la frecuencia especificada. Para funcionar correctamente, los scripts deben tener derechos de ejecución y no deben contener puntos en sus nombres.

De forma predeterminada, cualquier usuario puede crear tareas. Para habilitar la creación de tareas para ciertos usuarios, agréguelos al /etc/cron.allow expediente. Para todos los demás, se denegará el acceso.

Para restringir esta capacidad a un usuario específico, simplemente agregue su inicio de sesión al /etc/cron.deny archivo.

Cron escribe registros en el siguiente archivo: /var/registro/cron.

Ajuste fino de tareas cron

Para administrar tareas con la capacidad de especificar la hora exacta y la frecuencia de ejecución, use el comando:

crontab -e

La configuración del programador se abrirá en su editor de texto predeterminado (generalmente vi). Para configurar otro editor de texto predeterminado, use el comando (inserte su editor de texto favorito en lugar de "nano"):

exportar EDITOR = nano

Para mostrar la configuración actual de cron, ejecute:

crontab -l

Para ver la configuración de cron de otro usuario, ingrese:

crontab -u usuario -l

Para la edición:

crontab -u usuario -e

Usando el crontab El comando proporciona una verificación de sintaxis al guardar para evitar errores. Es por eso que es una mejor idea usar este comando para configurar cron. Para obtener información, el archivo del programador se puede editar directamente. Está localizado en / var / spool / cron /.

También vale la pena señalar que las tareas asignadas se realizarán en nombre del usuario que las agregó a su cron.
Los archivos cron usan la siguiente sintaxis:

# Ejemplo de definición de trabajo:
# .---------------- minuto (0 - 59)
# | .-------------- hora (0 - 23)
# | | .---------- día del mes (1 - 31)
# | | | .------- mes (1 - 12) O ene,feb,mar,abr ...
# | | | | .---- día de la semana (0 - 6) (Domingo=0 o 7) O dom,lun,tue,mid,thu,vie,sat
# | | | | |
# * * * * * comando a ejecutar

El signo * significa todos los valores válidos. Ejemplo de trabajo cron:

30 22 15 * * /opt/script.sh

La secuencia de comandos /opt/script.sh se correrá los días 15 de cada mes a las 22:30 horas.

Caracteres especiales y expresiones cron

Coma (,). En la programación, puede especificar varios valores separados por comas para realizar la misma tarea en diferentes momentos:

30 22 10,20,30 * *

Con tal registro, la tarea se lanzará los días 10, 20 y 30 de cada mes.
Slash (/). Slash se usa para indicar un paso. Por ejemplo, ejecutar una tarea cada 10 días se verá así:

30 22 * / 10 * *

Guión (-). Para especificar un rango de valores hay un guión. Por ejemplo, ejecución diaria del 10 al 20 del mes:

30 22 10-20 * *

Variables cron especiales:

  • @reboot - ejecutar en el arranque del sistema
  • @anualmente o @anualmente - una vez al año
  • @mensual - una vez al mes
  • @weekly - una vez a la semana
  • @daily - una vez al día
  • @por hora - cada hora
  • @medianoche - a medianoche

Ejemplo:

@diario /opt/script.sh