Cómo usar Cron y Crontab en Linux para programar tareas en servidores

¿Alguna vez ha intentado programar una tarea repetitiva en su servidor Linux y no sabía cómo hacerlo? Las herramientas cron y crontab que están disponibles por defecto en los sistemas Linux te permitirán realizar una determinada tarea (o varias) en un tiempo determinado, y es que podremos programar con una exactitud de minutos lo que queremos ejecutar. y cuando lo queramos. correr. Hoy te vamos a explicar en detalle cómo funcionan tanto Cron como Crontab, para que puedas gestionar correctamente tus servidores.

Estos dos elementos son muy importantes a la hora de programar tareas periódicas que se ejecutan sin que tengamos que estar al tanto de su estado. Nos permitirá no preocuparnos por ejecutar algo en un momento determinado, dejándolo completamente automático en el sistema operativo. Hemos mencionado anteriormente Cron y Crontab. En primer lugar, vamos a ver qué diferencias existen entre ambos elementos. Posteriormente aprenderemos a agregar tareas, y finalmente, profundizaremos en la gestión de trabajos Cron.

Diferencias entre Cron y Crontab

Aunque pueda parecer que estamos hablando de lo mismo, no es así, y dos elementos podrían considerarse dependientes entre sí. Para ser más claros, están a cargo de hacer posible la programación de tareas en sistemas Linux. Actualmente cualquier sistema operativo basado en Linux dispone de ambas herramientas, para poder programar las distintas tareas de forma repetitiva sin que tengamos que ocuparnos de ello.

Que es Cron

Cron es un demonio (proceso en segundo plano) que se ejecuta desde el momento en que se inicia el sistema operativo. Cron se encargará de comprobar si hay alguna tarea (job) por ejecutar, según el tiempo configurado en el propio sistema operativo. Es muy importante que la hora esté correctamente configurada, y también la zona horaria, de lo contrario, las ejecuciones realizadas por Cron no corresponderán a nuestra configuración.

Para asegurarse de que nuestro sistema operativo esté configurado correctamente, es muy importante que obtenga la hora automáticamente de los servidores NTP (Network Time Protocol) existentes. Para comprobar que tenemos la hora correcta en nuestro sistema operativo, en qué zona horaria nos encontramos y si el reloj del sistema está correctamente sincronizado con los servidores NTP, podemos ejecutar el siguiente comando:

timedatectl Deberíamos ver algo como lo siguiente:

Como ves todas las horas coinciden perfectamente y la hora es la correcta, esto es muy importante, de lo contrario, los “Crons” se ejecutarán en horas donde no deberían ejecutarse. En el caso de que no tengamos la zona horaria correctamente configurada, podemos configurarla correctamente con el siguiente comando:

timedatectl set-timezone Europe/Madrid Con la instalación del sistema operativo Linux se configuran automáticamente los servidores NTP que queramos, en caso de avería o que queramos cambiar estos servidores NTP, podemos hacerlo instalando el servicio correspondiente y configurándolo en / etc / ntp .conf.

Dependiendo de la distribución, Cron comienza a usar el /etc/rc.d/ o /etc/init.d carpetas y cada minuto comprueba el / etc / crontab o / var / spool / cron archivos para posibles ejecuciones que podamos tener. programado.

¿Qué es Crontab?

Crontab es un archivo de texto, es un archivo con contenido especial y específicamente diseñado para ser leído correctamente por Cron y proceder con la ejecución que hemos programado. Crontab tiene una lista con todos los scripts a ejecutar, generalmente cada usuario del sistema tiene su propio archivo Crontab, de esta forma cada usuario podría programar sus propias tareas repetitivas de forma independiente, sin necesidad de que nosotros tengamos que ir siempre al usuario administrador. De esta forma, cualquier usuario (incluidos los administradores) puede programar tareas repetitivas para realizar diferentes ejecuciones.

Para generar su propio archivo, cada usuario debe usar el comando “crontab” (sí, es el mismo nombre).

Agregar tareas a Crontab

Partiendo de que podemos ejecutar tareas, en primer lugar vamos a configurar un script muy sencillo al que llamaremos query.sh, pondremos este script en nuestro «Escritorio» o en «Documentos», estaremos capaz de ejecutar directamente el editor de texto «nano» en la ubicación donde queramos ponerlo:

nano consulta.sh El contenido del guión sería el siguiente:

#!/bin/bash sudo ls -l / > archivoResultado.txt

Una vez que tenemos programado el script, que es básicamente un programa que enumera los archivos y directorios del directorio actual, y lo exporta a un archivo de texto, tenemos que darle permisos de ejecución para poder ejecutarlo correctamente por Cron, de lo contrario no tener permisos de ejecución:

chmod ugo+x consulta.sh Este aspecto es muy importante, ya que de lo contrario el comando nunca se ejecutará.

Ha llegado el momento de editar el archivo que tiene las tareas. Para esto usaremos el comando crontab -e. Encontramos la siguiente estructura:

5 asteriscos y el comando a ejecutar. Cada uno de los 5 asteriscos significa:

  • m: minuto
  • hora cero
  • sol: día de la semana
  • lun: mes
  • dow: día del mes

Los valores que puede adoptar cada una de estas variables están en la imagen. Para example, en el caso de este último, se permite el uso del nombre de los días escrito en inglés. Aunque no aparece en la imagen anterior, es necesario indicar entre el comando y el último asterisco (el día) el propietario del archivo.

Para ser claros, vamos a utilizar algunos ejemplos:

Si queremos ejecutar la consulta script.sh todos los días a las 7 de la tarde, tendremos que indicar una línea en el crontab con lo siguiente:

00 19 * * * usuario /ubicacion/del/script/consulta.sh Si queremos correr todos los domingos a las 7 de la tarde:

00 19 * * 0 usuario /ubicacion/del/script/consulta.sh Ejecute el script cada 4 de febrero a las 7 p.m.

00 19 4 2 * usuario /ubicacion/del/script/consulta.sh Hay que decir que en Linux existen algunas cadenas de texto reservadas para ejecutar procesos durante ciertos periodos en el propio Crontab, esto será de mucha ayuda:

  • @reboot: Ejecutar una vez y tan pronto como se inicie la computadora.
  • @yearly: se ejecuta solo una vez al año: 0 0 1 1 *
  • @monthly: se ejecuta una vez al mes y el primer día: 0 0 1 * *
  • @weekly: cada semana, el primer minuto de la primera hora de la semana: 0 0 * * 0.
  • @daily: todos los días a las 12 de la noche: 0 0 * * *
  • @midnight: tiene el mismo efecto que el anterior.
  • @hourly: todas las horas durante su primer minuto: 0 * * * *

Aunque te hemos dicho cuál sería el formato, al usar crontab -e estos términos se pueden usar para definir el período.

Administración de trabajos cron

El funcionamiento de Crontab es muy sencillo, como hemos visto, ahora te vamos a enseñar algunos comandos básicos para controlar el funcionamiento del propio Crontab en sistemas operativos Linux.

Para reemplazar el archivo existente por otro definido por el usuario, se debe utilizar el siguiente comando:

crontab archivo Para editar el archivo existente actualmente, se utiliza el comando que ya hemos visto a lo largo de este artículo:

crontab -e Enumere todas las tareas existentes en el crontab del usuario:

crontab -l Elimina el crontab que está configurado:

crontab -d Defina el directorio donde se almacenará el archivo crontab. Para realizar esta operación es necesario disponer de permisos de ejecución en dicho directorio:

crontab -c dir Instrucción para manejar el crontab de otros usuarios existentes en el sistema:

crontab -u usuario Como ves, programar la ejecución de tareas no es complicado y se puede hacer de forma rápida si todo lo mencionado en este tutorial es claro.

Related Posts