Programación de tareas cron en Linux con crontab

Cómo programar tareas cron en Linux con crontab

En un sistema Linux, utilizando crontab, puede programar tareas para que se ejecuten a intervalos específicos, conocidas como trabajos Cron. En este tutorial, exploraremos cómo utilizar Crontab para programar trabajos Cron en Linux.

Ya sea en un servidor Windows o Linux, a menudo es necesario programar tareas para automatizar determinadas acciones, sobre todo fuera del horario laboral. Puede tratarse de ejecutar una actualización del sistema o de lanzar un script para hacer una copia de seguridad de los datos o de una base de datos.

1. ¿Qué es el archivo crontab?

El expediente crontab es un archivo de texto que especifica el calendario de tareas Cron a ejecutar localmente en la máquina Linux. Existen dos tipos de archivos Crontab: los archivos archivos Crontab del sistema y archivos Crontab de usuarioque influye en el contexto de ejecución. Los archivos Crontab de los usuarios se almacenan en diferentes ubicaciones dependiendo de la distribución de Linux.

Si tomamos el ejemplo de Debian y Ubuntu, estos archivos se almacenan en /var/spool/cron/crontabs. A nivel del sistema global, el crontab se encuentran en /etc/crontab y guiones en el /etc/cron.d.

Aunque puede modificar los archivos Crontab manualmente, le recomendamos que utilice el comando crontab para este fin.

Ahora vamos a pasar a la sintaxis de los archivos Crontab para entender cómo especificar correctamente los tiempos de ejecución de las tareas.

2. Sintaxis de Crontab

Cada línea de un archivo crontab corresponde a una tarea programada y debe seguir una estructura precisa. De hecho, cada línea contiene seis campos separados por un espacio, siendo el último valor el comando que debe ejecutarse. Estos campos representan la minuto, l'tiempoel día del mesel mesel día de la semanay finalmente pedir.

He aquí un ejemplo de una línea Crontab típica:

<minute> <heure> <jour du mois> <mois> <jour de la semaine> <commande>
  • Le premier champ représente la minute (0-59).
  • Le deuxième champ représente l’heure (0-23).
  • Le troisième champ représente le jour du mois (1-31).
  • Le quatrième champ représente le mois (1-12).
  • Le cinquième champ représente le jour de la semaine (0-7, où dimanche = 0 ou 7).
  • Le dernier champ contient la commande à exécuter.

Modificando estos valores, será posible, por ejemplo, ejecutar un archivo :

  • Toutes les 10 minutes
  • Tous les lundi de chaque semaine à 06:00
  • Tous les jours à 01:00
  • Toutes les deux heures, le samedi et le mercredi
  • Etc…

Es un sistema muy flexible. También debe tener en cuenta lo siguiente sobre Primeros 5 campos de una tarea cron Pueden contener uno o varios valores, separados por comas, o intervalos de valores separados por un guión. El asterisco también es una opción.

Están disponibles los siguientes operadores:

  • * : l’astérisque représente toutes les valeurs. Par exemple, si vous placez un astérisque sur le champ correspondant au jour de la semaine, cela signifie que la tâche s’exécutera tous les jours.
  • , : la virgule permet de spécifier une liste de valeurs, pour une exécution répétée. Si vous avez 7,23 dans le champ des heures, cela signifie que la tâche s’exécutera à 7h du matin et 23h du soir.
  • : le tiret permet de définir une plage de valeurs.
  • / : le slash permet de spécifier des intervalles de valeurs. Par exemple, le fait de préciser */15 dans le champ des minutes signifie que la tâche sera exécutée toutes les 15 minutes.

Veamos ahora cómo utilizar estos operadores y combinaciones en ejemplos concretos.

3. Macros predefinidas y comandos Crontab

Es muy común programar tareas recurrentes a través del crontab. En lugar de tener que escribir líneas completas con los 6 campos, los desarrolladores de Linux tuvieron la excelente idea de crear macros predefinidas.

Por ejemplo, la macro @diario ejecuta una tarea cada día a medianoche :

@pedido diario

Aquí tienes una lista de las macros disponibles:

  • @yearly pour exécuter la tâche une fois par an, à minuit, le 1er janvier.
  • @monthly pour exécuter la tâche une fois par mois à minuit, le 1er jour de chaque mois.
  • @weekly pour exécuter la tâche une fois par semaine, à minuit, chaque dimanche.
  • @daily pour exécuter la tâche tous les jours à minuit (00:00).
  • @reboot pour exécuter la tâche au démarrage du système.

4. Crear una tarea en el crontab

La orden crontab le permite no sólo crear y modificar archivos Crontab, sino también verlos o eliminarlos. Estos son algunos comandos útiles:

  • crontab -e : ouvrir ou créer un fichier Crontab pour l’édition.
  • crontab -l : afficher le contenu du fichier Crontab.
  • crontab -r : supprimer le fichier Crontab actuel.

Veamos algunos ejemplos concretos de tareas Cron en una máquina Linux. En primer lugar, es necesario abrir el archivo :

sudo crontab -e

Si no especifica sudoEditará el crontab del usuario con el que esté conectado en ese momento. La primera vez, debe seleccionar el editor de texto con el que editar el crontab. Especifique 1 elegir nano.

A continuación, debe declarar su tarea cron al final del archivo, después de cualquier comentario.

Ejecute una orden todos los días de la semana, excepto sábados y domingos, a las 06:00:

0 06 * * 1-5 /ruta/a/pedido

Ejecutar un Script Bash cada 15 minutos y redirigir la salida estándar a /dev/null :

*/15 * * * /home/tutomaker/script.sh > /dev/null

Una vez que haya añadido la línea al crontab, guárdela utilizando el método abreviado CTRL + O y cerrar con CTRL + X (si utiliza nano).

Para familiarizarse con el sistema de planificación, le recomiendo que utilice este sitio:

5. Conclusión

Después de leer este artículo de la caja de tutoriales de TI, ahora ya sabes cómo programar y automatizar tareas en Linux utilizando Crontab. Esto se aplica a Debian, Ubuntu, Fedora y AlmaLinux, Rocky Linux y muchas otras distribuciones de Linux.

Tanto si quieres automatizar tareas sencillas del día a día como ejecutar scripts personalizados, necesitas utilizar el crontab. ¿A menos que prefieras ejecutar la tarea manualmente cada vez que sea necesario? No lo creo...

También te podría gustar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *