Cron Job: una guía completa para principiantes

Cron Job: una guía completa para principiantes

A menudo hay formas de hacer las cosas de manera más eficiente. Por ejemplo, el manejo de tareas repetitivas utilizando un proceso automatizado es lo que los webmasters ocupados prefieren. Si usas un sistema operativo similar a Unix, un cron job podría ahorrarte tiempo al realizar tareas automáticamente.

En este artículo, explicaremos los conceptos básicos de un trabajo cron y cómo usarlo para programar tareas.

Los fundamentos de un Cron job

Puedes crear y editar cron jobs utilizando algunos métodos diferentes. En este tutorial, te mostraremos cómo hacerlo utilizando el indicador de Shell de Linux (Terminal).

Si tienes un hosting VPS en Hostinger, puedes encontrar las credenciales de inicio de sesión en la pestaña de administración de VPS y acceder a tu servidor a través de SSH. Se puede acceder a la línea de comandos para VPS a través de PuTTY SSH o a través de la terminal basada en navegador directamente desde hPanel:

La página de resumen de un VPS de Hostinger. El botón de terminal del navegador está resaltado

Estas son algunas operaciones básicas que pueden realizar los cron jobs:

Si deseas editar un archivo crontab del usuario actual, escribe el siguiente comando en el terminal:

crontab -e

Te dará un resultado como este.

Cron job crontab -e result

Como utiliza el editor vi, puedes aprender los comandos básicos vi para asegurarte de tomar la acción correcta.

Si deseas editar el crontab de otro usuario, puede escribir crontab -u nombredeusuario -e. Ten en cuenta que solo puedes hacer esto como superusuario, lo que significa que debes escribir: sudo su antes del comando.

crontab -u nombre de usuario -e resultado cron trabajo

Si deseas eliminar el archivo crontab actual del usuario actual, escribe el siguiente comando:

crontab -r

Esto es lo mismo que -r, sin embargo, le indica al usuario una opción sí/no antes de eliminar el crontab:

crontab -i

Si deseas mostrar el contenido del archivo crontab en el que estás conectado actualmente, escribe el siguiente comando en el terminal:

crontab -l

Otra operación te permite ver si hay archivos crontab creados. Solo tienes que escribir crontab -l. Si no tienes ninguno, verá este resultado.

crontab -l resultado cron job

Además, si deseas ver las listas de archivos crontab de otros usuarios, puedes escribir crontab -u nombredeusuario -l como superusuario.

cron crontab -u nombre de usuario -l resultado

Además de conocer las operaciones básicas, también es importante aprender la sintaxis básica.

Básicamente, un archivo crontab consta de dos partes: el temporizador de programación y el comando. Así es como se escribe el comando:

* * * * * /bin/sh backup.sh
  • ***** /bin/sh backup.sh se está activando un cron job que ejecutará una copia de seguridad cada minuto.
  • 30 18 * * * rm /home/sydtesting/tmp/* significa que el cron job elimina los archivos tmp de /home/sydtesting/tmp/ todos los días a las 6:30 PM.

Veamos algunos detalles adicionales.

Cómo escribir la sintaxis de Cron correctamente

Como mencionamos anteriormente, un archivo crontab tiene cinco campos, cada campo está representado por un asterisco, para determinar la fecha y hora de un determinado conjunto de tareas a realizar repetidamente.

Cinco campos del archivo Crontab
  • Minuto: minuto de la hora en que se ejecutará el comando, que va de 0 a 59.
  • Hora: la hora en que se ejecutará el comando, que va de 0 a 23.
  • Día del mes: en qué día del mes deseas que se ejecute el comando, que va del 1 al 31.
  • Mes: en qué mes se ejecutará el comando especificado, que va del 1 al 12.
  • Día de la semana: en qué día de la semana deseas que se ejecute un comando, que va de 0 a 7.

Además de eso, debes usar los caracteres adecuados en cada archivo crontab.

  • Asterisco (*): para definir todos los parámetros de programación.
  • Coma (,): para mantener dos o más tiempos de ejecución de un solo comando.
  • Guión (-): para determinar el intervalo de tiempo al configurar varios tiempos de ejecución de un solo comando.
  • Barra oblicua (/): para crear intervalos de tiempo predeterminados en un rango específico.
  • Último (L): para el propósito específico de determinar el último día de la semana en un mes determinado. Por ejemplo, 3L significa el último miércoles.
  • Día de la semana (W): para determinar el día de la semana más cercano de un momento determinado. Por ejemplo, 1W significa que si el 1 de un mes es un sábado, el comando se ejecutará el lunes (el 3 del mes).
  • Hash (#): para determinar el día de la semana, seguido de un número que va del 1 al 5. Por ejemplo, 1#2 significa el segundo lunes
  • Signo de interrogación (?): para dejar en blanco.

12 Ejemplos de sintaxis de Cron

Ahora que has aprendido a escribir la sintaxis de cron correctamente, te daremos más ejemplos para ayudarte a comprender mejor las reglas establecidas anteriormente.

Antes de continuar, ten en cuenta que la salida del comando se enviará automáticamente a tu cuenta de correo electrónico local. Entonces, si deseas dejar de recibir estos correos electrónicos, puedes agregar >/dev/null 2>&1 a la sintaxis como en el siguiente ejemplo:

0 5 * * * /root/backup.sh >/dev/null 2>&1

Si deseas enviar la salida de correo electrónico a una cuenta específica, puedes agregar MAILTO seguido de la dirección de correo electrónico. Aquí hay un ejemplo:

MAILTO="myname@hostinger.com"
0 3 * * * /root/backup.sh >/dev/null 2>&1

Aquí hay más ejemplos de sintaxis:

ExpresiónSignificado
0 0 * * * /bin/sh backup.shPara realizar una copia de seguridad de la base de datos a medianoche y ejecutarla una vez al día.
0 6,18 * * * /bin/sh backup.shPara realizar una copia de seguridad de la base de datos dos veces al día a las 6 AM y 6 PM.
0 */6 * * * /scripts/monitor.shPara realizar el monitoreo cada seis horas.
*/10 * * * * /home/user/script.shPara realizar un cron job para el archivo de script ubicado en el directorio de inicio cada 10 minutos.
0 * 20 7 * /bin/sh backup.shPara ejecutar una copia de seguridad de la base de datos cada hora cada 20 de julio.
0 0 * * 2 * /bin/shPara ejecutar una copia de seguridad de la base de datos a la medianoche todos los martes.
* * * 1,2,5 *  /script/script.shPara ejecutar un comando en enero, febrero y mayo.
10-59/5 5 * * */home/user/script.shPara ejecutar un comando cada 5 minutos a las 5 AM, comenzando a las 5:10 AM.
0 8 1 */3 * /home/user/script.shPara ejecutar un comando trimestralmente el primer día a las 8 AM.
* * * * * /scripts/script.sh; /scripts/scrit2.shPara establecer una programación para múltiples trabajos en un solo trabajo cron.
@reboot /scripts/script.shPara realizar una determinada tarea cada vez que inicia el sistema.
0 0 1 * *  /home/user/script.sh Para ejecutar un comando el primer día de cada mes

Permisos Cron

Dos archivos juegan un papel importante cuando se trata de trabajos cron.

  • /etc/cron.allow: si existe cron.allow, debe contener el nombre del usuario para que este pueda usar cron jobs.
  • /etc/cron.deny: si el archivo cron.allow no existe pero el archivo cron.deny sí, entonces, para usar trabajos cron, el usuario no debe aparecer en el archivo cron.deny.

¿Qué es un Cron Job?

Cron es un programa de utilidad para repetir tareas en un momento posterior. Un comando que programa una tarea, en un momento específico, repetidamente es un Cron Job.

Si deseas programar un trabajo de una sola vez, para un momento posterior, es posible que desees utilizar otro comando. Pero, para trabajos recurrentes, cron es la solución perfecta.

Cron es un daemon, lo que significa que funciona en segundo plano para ejecutar trabajos no interactivos. En Windows, puedes estar familiarizado con los procesos en segundo plano, llamados también Servicios.

Un daemon siempre está en estado inactivo y espera para ver si un comando le solicita que realice una determinada tarea, ya sea dentro de la computadora o desde cualquier otra computadora en la red.

Un archivo cron es un archivo de texto simple que contiene comandos para ejecutarse en un momento específico. El archivo crontab predeterminado del sistema es /etc/crontab y se encuentra dentro de un directorio crontab, /etc/cron.*/. Solo los administradores del sistema pueden editar el archivo crontab del sistema.

Sin embargo, como los sistemas operativos tipo Unix admiten múltiples usuarios, cada uno también puede crear su propio archivo crontab y ejecutar comandos para realizar trabajos en cualquier momento que lo desee. Un cron daemon verificará el archivo y ejecutará el comando en el fondo del sistema.

Con los trabajos cron, puedes automatizar el mantenimiento del sistema, la supervisión del espacio en disco y programar copias de seguridad. Debido a su naturaleza, los trabajos cron son excelentes para una computadora que funciona 24/7, un servidor.

Ten en cuenta que si bien los trabajos de cron los utilizan principalmente los administradores del sistema, también puede ser increíblemente útil para los desarrolladores web. Por ejemplo, puedes usar cron para desactivar cuentas caducadas, verificar enlaces rotos o incluso enviar boletines a usuarios específicos.

Conclusión

Configurar un trabajo programado automáticamente no solo será práctico, sino que también ayudará a evitar que posiblemente pierdas la acción que debe realizarse de forma puntual.

Un Cron Job es una excelente manera de administrar este tipo de tareas, bien seas administrador del sistema o con cualquier otra profesión, como un desarrollador web. Todo lo que necesitas hacer es usar el comando correcto y elegir el momento adecuado.

Estos son algunos de los comandos básicos:

  • $ crontab e – para crear y editar un archivo crontab.
  • $ crontab -u nombre de usuario -e – para editar el archivo crontab de otro usuario con acceso de superusuario.
  • $ crontab -l: para ver la lista de archivos crontab de los usuarios actuales.
  • $ crontab -r: para eliminar los archivos crontab.
  • $ crontab -a nombredearchivo: para instalar el nombre de archivo como un archivo crontab (en algunos sistemas, –a no es necesario).

Ahora inténtalo y deja que la automatización trabaje por ti cuando lo prefieras.

Author
El autor

Deyimar A.

Deyi es una entusiasta del marketing digital, con experiencia en diseño de páginas web, creación de contenido, copywrite y SEO. Forma parte del equipo de SEO & Localization de Hostinger. En su tiempo libre, le gusta desarrollar proyectos, leer un libro o ver una buena película.