GNU/Linux >> Tutoriales Linux >  >> Linux

Cron Job:una guía completa para principiantes 2022

Hacer la misma tarea una y otra vez puede ser una tarea ardua. La programación de trabajos cron permite a los usuarios automatizar tareas en un servidor privado virtual o en cualquier sistema operativo similar a Unix. Esto ahorra un tiempo precioso, lo que permite a los usuarios concentrarse en otras tareas esenciales.

En esta guía completa para principiantes, aprenderá los conceptos básicos de los trabajos cron, incluidos sus tipos, sintaxis, cadenas especiales y permisos. Al final de este artículo, podrá usar trabajos cron para programar tareas de manera más eficiente.

¿Qué es un trabajo cron?

Cron es un programa de utilidad que permite a los usuarios ingresar comandos para programar tareas repetidamente en un momento específico. Las tareas programadas en cron se llaman trabajos cron . Los usuarios pueden determinar qué tipo de tarea quieren automatizar y cuándo debe ejecutarse.

Cron es un demonio:un proceso en segundo plano que ejecuta trabajos no interactivos. En Windows, es posible que esté familiarizado con procesos en segundo plano como Servicios que funcionan de manera similar al demonio cron.

Un daemon siempre está inactivo, esperando un comando para solicitarle que realice una tarea en particular. El comando se puede ingresar en cualquier computadora en la red.

Un archivo cron es un archivo de texto simple que contiene comandos para ejecutar periódicamente en un momento específico. La tabla cron predeterminada del sistema o el archivo de configuración crontab es /etc/crontab , ubicado dentro del directorio crontab /etc/cron.*/ .

Solo los administradores del sistema pueden editar el archivo crontab del sistema. Sin embargo, los sistemas operativos similares a Unix admiten múltiples administradores. Cada uno puede crear un archivo crontab y escribir comandos para realizar trabajos en cualquier momento que desee.

Con trabajos cron, los usuarios pueden automatizar el mantenimiento del sistema, monitorear el espacio en disco y programar copias de seguridad. Debido a su naturaleza, los trabajos cron son excelentes para computadoras que funcionan las 24 horas, los 7 días de la semana, como los servidores.

Si bien los trabajos cron los utilizan principalmente los administradores de sistemas, también pueden ser beneficiosos para los desarrolladores web.

Por ejemplo, como administrador de un sitio web, puede configurar un trabajo cron para hacer una copia de seguridad automática de su sitio todos los días a la medianoche, otro para verificar si hay enlaces rotos todos los lunes a la medianoche y un tercero para borrar el caché de su sitio todos los viernes al mediodía.

Sin embargo, como cualquier otro programa, cron tiene limitaciones que debes considerar antes de usarlo:

  • El intervalo más corto entre trabajos es de 60 segundos . Con cron, no podrá repetir un trabajo cada 59 segundos o menos.
  • Centralizado en una computadora. Los trabajos cron no se pueden distribuir a varias computadoras en una red. Entonces, si la computadora que ejecuta cron falla, las tareas programadas no se ejecutarán y los trabajos perdidos solo se podrán ejecutar manualmente.
  • Sin mecanismo de reintento automático . Cron está diseñado para ejecutarse en momentos estrictamente especificados. Si una tarea falla, no se ejecutará nuevamente hasta la próxima hora programada. Esto hace que cron no sea adecuado para tareas incrementales.

Con estas limitaciones, cron es una excelente solución para tareas simples que se ejecutan en un momento específico con intervalos regulares de al menos 60 segundos.

Si desea programar un trabajo de una sola vez para más adelante, es posible que desee utilizar otro método.

Operaciones básicas de trabajos cron

Este tutorial le mostrará cómo programar trabajos cron ingresando comandos en un programa de shell como Bash en Linux u otro sistema operativo similar a Unix.

El alojamiento VPS de Hostinger se ejecuta en un sistema operativo basado en Linux. Por lo tanto, aprender a programar trabajos cron aumentará significativamente la eficiencia de su trabajo como administrador de VPS. Se puede acceder a la línea de comando para VPS a través de PuTTY SSH.

Antes de continuar con las operaciones básicas de cron, es esencial conocer los diferentes archivos de configuración de trabajo de cron:

  • El sistema crontab. Úselo para programar trabajos esenciales en todo el sistema que solo se pueden cambiar con privilegios de root.
  • El usuario crontab. Este archivo permite a los usuarios crear y editar trabajos cron que solo se aplican a nivel de usuario.

Si desea editar el crontab del sistema, asegúrese de que el usuario actual tenga privilegios de root.

Las siguientes son algunas operaciones básicas que puede realizar cron:

Para crear o editar un archivo crontab , ingrese lo siguiente en la línea de comando:

crontab -e

Si no se encuentran archivos crontab en su sistema, el comando creará uno nuevo automáticamente. crontab-e le permite agregar, editar y eliminar trabajos cron.

Necesitarás un editor de texto como vi o nano para editar un archivo crontab. Al ingresar crontab -e por primera vez, se le pedirá que elija con qué editor de texto desea editar el archivo.

Para ver una lista de tareas programadas activas en su sistema, ingrese el siguiente comando:

crontab -l

Si su sistema tiene varios usuarios, puede ver sus listas de archivos crontab ingresando el siguiente comando como superusuario:

crontab -u username -l

También puede editar fácilmente los trabajos programados de otros usuarios escribiendo el siguiente comando crontab:

sudo su crontab -u username -e

Para otorgarte privilegios de root , agregue sudo su al comienzo del comando. Algunos comandos, incluido este, solo pueden ser ejecutados por usuarios root.

Por último, para eliminar todas las tareas programadas en su archivo crontab y comience de nuevo, escriba el siguiente comando:

crontab -r

Alternativamente, el siguiente comando es el mismo que crontab -r , excepto que le pedirá al usuario una opción sí/no antes de eliminar el crontab:

crontab -i

Además de crontab, el usuario root también puede agregar trabajos cron a etc/cron.d directorio. Es más adecuado para ejecutar scripts para instalaciones y actualizaciones automáticas.

Tenga en cuenta que el usuario que agregue trabajos cron a este directorio debe tener acceso raíz y cumplir con las convenciones de nomenclatura de las partes de ejecución.

Alternativamente, un usuario root puede mover sus scripts a los siguientes directorios para programar su ejecución:

  • /etc/cron.hourly/ – Ejecutar todos los scripts una vez por hora
  • /etc/cron.daily/ – Corre una vez al día.
  • /etc/cron.weekly/ – Corre una vez a la semana.
  • /etc/cron.monthly/ – Ejecutar una vez al mes.

Sintaxis de Crontab

Para crear un trabajo cron, primero deberá comprender la sintaxis y el formato de cron. De lo contrario, puede que no sea posible configurar correctamente los trabajos cron.

La sintaxis crontab consta de cinco campos con los siguientes valores posibles:

  • Minuto. El minuto de la hora en que se ejecutará el comando, que va de 0 a 59.
  • Hora. La hora a la que se ejecutará el comando, que va de 0 a 23 en la notación de 24 horas.
  • Día del mes . El día del mes en el que el usuario desea que se ejecute el comando, que va del 1 al 31.
  • Mes . El mes en el que el usuario desea que se ejecute el comando, que va del 1 al 12, lo que representa de enero a diciembre.
  • Día de la semana. El día de la semana en el que se ejecuta un comando, que va de 0 a 6, lo que representa de domingo a sábado. En algunos sistemas, el valor 7 representa el domingo.

No deje ninguno de los campos en blanco.

Si, por ejemplo, desea configurar un trabajo cron para ejecutar root/backup.sh todos los viernes a las 5:37 p. m., este es el aspecto que debería tener su comando cron:

37 17 * * 5 root/backup.sh

En el ejemplo anterior, 37 y 17 representan las 5:37 pm. Ambos asteriscos para el Día del mes y Mes campos significar todos los valores posibles. Esto significa que la tarea debe repetirse sin importar la fecha o el mes. Finalmente, 5 representa el viernes. Luego, el conjunto de números es seguido por la ubicación de la tarea en sí.

Si no está seguro de escribir manualmente la sintaxis de cron, puede usar herramientas gratuitas como Crontab Generator o Crontab.guru para generar los números exactos para la hora y la fecha que desea para su comando.

Para establecer la hora correcta para su comando cron, es esencial el conocimiento de los operadores de trabajos cron. Le permiten especificar qué valores desea ingresar en cada campo. Debe utilizar los operadores adecuados en todos los archivos crontab.

  • Asterisco (*) . Utilice este operador para indicar todos los valores posibles en un campo. Por ejemplo, si desea que su trabajo cron se ejecute cada minuto, escriba un asterisco en el Minuto campo.
  • Coma (,) . Utilice este operador para enumerar varios valores. Por ejemplo, escribir 1,5 en el día de la semana El campo programará la tarea para que se realice todos los lunes y viernes.
  • Guión (-) . Utilice este operador para determinar un rango de valores. Por ejemplo, si desea configurar un trabajo cron de junio a septiembre, escriba 6-9 en el Mes campo hará el trabajo.
  • Separador (/) . Utilice este operador para dividir un valor. Por ejemplo, si desea que un script se ejecute cada doce horas, escriba */12 en la Hora campo.
  • Último (L) . Este operador se puede utilizar en los campos de día del mes y día de la semana. Por ejemplo, escribir 3L en el campo del día de la semana significa el último miércoles de un mes.
  • Día de la semana (M) . Utilice este operador para determinar el día de la semana más cercano a una hora determinada. Por ejemplo, si el 1er de un mes es un sábado, escribiendo 1W en el campo del día del mes ejecutará el comando el lunes siguiente (el 3er ).
  • Hachís (#). Utilice este operador para determinar el día de la semana, seguido de un número del 1 al 5. Por ejemplo, 1#2 significa el segundo lunes del mes.
  • Signo de interrogación (?) . Utilice este operador para ingresar "ningún valor específico" para los campos "día del mes" y "día de la semana".

Cadenas especiales de Cron Job

Se utilizan cadenas especiales para programar trabajos cron a intervalos de tiempo sin que el usuario tenga que averiguar el conjunto lógico de números a ingresar. Para usarlos, escribe un @ seguido de una frase simple.

Aquí hay algunas cadenas especiales útiles que puede usar en los comandos:

  • @por hora . El trabajo se ejecutará una vez por hora.
  • @diario o @medianoche . Estas cadenas ejecutarán la tarea todos los días a la medianoche.
  • @semanal . Úselo para ejecutar trabajos una vez por semana a la medianoche del domingo.
  • @mensual. Esta cadena especial ejecuta un comando una vez el primer día de cada mes.
  • @anual . Use esto para ejecutar una tarea una vez al año a la medianoche del 1 de enero.
  • @reboot . Con esta cadena, el trabajo se ejecutará solo una vez al inicio.

¡Importante! Recuerde tener mucho cuidado al programar trabajos cron sensibles a la zona horaria.

Ejemplos de sintaxis de Cron

Ahora que sabe cómo se ve la sintaxis cron correcta, repasaremos algunos ejemplos para ayudarlo a comprenderlo mejor.

Tenga en cuenta que la salida de cron se enviará automáticamente a su cuenta de correo electrónico local. Si desea dejar de recibir correos electrónicos, puede agregar >/dev/null 2>&1 a un comando como en el siguiente ejemplo:

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

Si desea enviar el resultado a una cuenta de correo electrónico específica, agregue MAILTO seguido de una dirección de correo electrónico. Aquí hay un ejemplo:

MAILTO="[email protected]"
0 3 * * * /root/backup.sh >/dev/null 2>&1

Eche un vistazo a los siguientes comandos de muestra para comprender mejor la sintaxis de cron:

Permisos de cron

Los siguientes dos archivos se pueden crear o editar para permitir o restringir que los usuarios utilicen el archivo cron del sistema:

  • /etc/cron.permitir – si cron.allow existe, debe contener un nombre de usuario para permitirles usar trabajos cron.
  • /etc/cron.deny – si cron.allow no existe pero cron.deny lo hace, el usuario que desea utilizar trabajos cron no debe aparecer en el archivo.

Conclusión

Configurar trabajos programados automáticamente es una solución práctica que evita que te olvides de tareas importantes.

Los trabajos cron son una excelente manera para que los administradores de sistemas y los desarrolladores web administren tareas repetitivas. Todo lo que se necesita hacer es ingresar los comandos apropiados y elegir el tiempo de ejecución correcto.

Para programar un trabajo cron, use la sintaxis correcta en la línea de comando. Alternativamente, puede emplear cadenas especiales para facilitar el proceso. Recuerde asignar los permisos adecuados para que solo los usuarios autorizados puedan acceder al archivo cron.

Si está buscando una solución específica para WordPress, consulte nuestro tutorial de trabajo cron de WordPress.

Esperamos que este artículo lo haya ayudado a comprender los conceptos básicos del uso de trabajos cron para programar tareas. Si tiene alguna pregunta, no dude en dejarla en la sección de comentarios.


Linux
  1. Una guía de la terminal de Linux para principiantes

  2. YAML para principiantes

  3. Configurar trabajos cron para secuencias de comandos de acción

  4. ¿Cómo programa internamente cron los trabajos?

  5. Configuración del trabajo cron de Godaddy para ejecutar el script php

Guía de Spark Streaming para principiantes

Una guía para principiantes de LVM

Una guía para principiantes sobre los trabajos de Cron

Trabajos cron programados

¿Cómo verificar la salida de Cron Jobs en Hostinger?

Cómo agregar trabajos cron en cPanel

    Ejemplo Explicación
    0 0 * * 0 /root/backup.sh Realice una copia de seguridad todos los domingos a medianoche.
    0 * * * 1 /root/clearcache.sh Borrar el caché cada hora los lunes.
    0 6,18 * * * /root/backup.sh Copia de seguridad de datos dos veces al día a las 6 am y 6 pm.
    */10 * * * * /scripts/monitor.sh Realice un seguimiento cada 10 minutos.
    */15 * * * * /root/backup.sh Realice una copia de seguridad cada 15 minutos.
    * * 20 7 * /root/backup.sh Realice una copia de seguridad cada minuto el 20 de julio.
    0 22 * ​​* 1-5 /root/clearcache.sh Borrar el caché todos los días de la semana (de lunes a viernes) a las 22:00.
    0 0 * * 2 * /root/backup.sh Realice una copia de seguridad a la medianoche todos los martes.
    * * * 1,2,5 * /scripts/monitor.sh Realice un seguimiento cada minuto durante enero, febrero y mayo.
    10-59/10 5 * * * /root/clearcache.sh Borrar el caché cada 10 minutos a las 5 a. m., a partir de las 5:10 a. m.
    0 8 1 */3 * /home/usuario/script.sh Haga que la tarea se ejecute trimestralmente el primer día del mes a las 8 a. m.
    0 * * * * /root/backup.sh Cree una copia de seguridad cada hora.
    * * * * * /scripts/script.sh; /scripts/scrit2.sh Incluya múltiples tareas en un solo trabajo cron. Útil para programar varias tareas para que se ejecuten al mismo tiempo.
    @reboot /root/clearcache.sh Borrar caché cada vez que enciende el sistema.
    0 8 1-7 * 1 /scripts/script.sh Ejecute un script el primer lunes de cada mes, a las 8 am.
    5 4 * * 0 /root/backup.sh Cree una copia de seguridad todos los domingos a las 4:05 am.
    15 9 1,20 * * /scripts/monitor.sh Realizar el seguimiento a las 21:15 los días 1 y 20 de cada mes.
    @hourly /scripts/monitor.sh Realizar el seguimiento cada hora.
    0 0 1,15 * 3 /scripts/script.sh Ejecute un script a medianoche todos los miércoles entre el 1 y el 15 de cada mes.
    15 14 1 * * /root/clearcache.sh Borrar el caché el primer día de cada mes a las 2:15 p. m.
    00 08-17 * * 1-5 contenedor/comprobar-db-estado Consulte el estado de la base de datos todos los días de lunes a viernes cada hora de 8 a 5 pm.
    15 6 1 1 * /root/backup.sh Realice una copia de seguridad cada 1 de enero a las 6:15 a.m.
    0 0 * * * /scripts/monitor.sh Ejecute el script de monitoreo una vez al día a la medianoche.
    0 0 15 * * /root/clearcache.sh Borrar el caché a la medianoche del día 15 de cada mes.
    * * * * 1,5 /scripts/monitor.sh Realizando monitoreo todos los lunes y viernes.