GNU/Linux >> Tutoriales Linux >  >> Linux

Programación de trabajos de Cron con Crontab

Cron es un demonio de programación que ejecuta tareas a intervalos específicos. Estas tareas se denominan trabajos cron y se utilizan principalmente para automatizar el mantenimiento o la administración del sistema.

Por ejemplo, puede configurar un trabajo cron para automatizar tareas repetitivas, como realizar copias de seguridad de bases de datos o datos, actualizar el sistema con los parches de seguridad más recientes, verificar el uso del espacio en disco, enviar correos electrónicos, etc.

Los trabajos cron se pueden programar para ejecutarse por minuto, hora, día del mes, mes, día de la semana o cualquier combinación de estos.

¿Qué es el archivo Crontab #

Crontab (tabla cron) es un archivo de texto que especifica la programación de trabajos cron. Hay dos tipos de archivos crontab. Los archivos crontab de todo el sistema y los archivos crontab de usuarios individuales.

Los archivos crontab de los usuarios se nombran de acuerdo con el nombre del usuario y su ubicación varía según los sistemas operativos. En las distribuciones basadas en Red Hat como CentOS, los archivos crontab se almacenan en el /var/spool/cron directorio, mientras que en Debian y Ubuntu los archivos se almacenan en /var/spool/cron/crontabs directorio.

Aunque puede editar los archivos crontab del usuario manualmente, se recomienda usar el crontab comando.

El /etc/crontab y los scripts dentro de /etc/cron.d son archivos crontab de todo el sistema que solo los administradores del sistema pueden editar.

En la mayoría de las distribuciones de Linux, también puede colocar scripts dentro de /etc/cron.{hourly,daily,weekly,monthly} directorios, y los scripts se ejecutarán cada hour/day/week/month .

Sintaxis y operadores de Crontab #

Cada línea en el archivo crontab del usuario contiene seis campos separados por un espacio seguido por el comando a ejecutar.

* * * * * command(s)
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

Los primeros cinco campos pueden contener uno o más valores, separados por una coma o un rango de valores separados por un guión.

  • * - El operador asterisco significa cualquier valor o siempre. Si tiene el símbolo de asterisco en el campo Hora, significa que la tarea se realizará cada hora.
  • , - El operador de coma le permite especificar una lista de valores para la repetición. Por ejemplo, si tiene 1,3,5 en el campo Hora, la tarea se ejecutará a la 1 am, 3 am y 5 am.
  • - - El operador de guión le permite especificar un rango de valores. Si tienes 1-5 en el campo Día de la semana, la tarea se ejecutará todos los días de la semana (de lunes a viernes).
  • / - El operador de barra le permite especificar valores que se repetirán durante un cierto intervalo entre ellos. Por ejemplo, si tiene */4 en el campo Hora, significa que la acción se realizará cada cuatro horas. Es lo mismo que especificar 0,4,8,12,16,20 . En lugar de un asterisco antes del operador de barra inclinada, también puede usar un rango de valores, 1-30/10 significa lo mismo que 1,11,21 .

Archivos Crontab de todo el sistema #

La sintaxis de los archivos crontab de todo el sistema es ligeramente diferente a la de los crontabs de usuario. Contiene un campo de usuario obligatorio adicional que especifica qué usuario ejecutará el trabajo cron.

* * * * * <username> command(s)

Macros predefinidos #

Hay varias macros de programación de Cron especiales que se utilizan para especificar intervalos comunes. Puede usar estos atajos en lugar de la especificación de fecha de cinco columnas.

  • @yearly (o @annually ) - Ejecute la tarea especificada una vez al año a la medianoche (12:00 am) del 1 de enero. Equivale a 0 0 1 1 * .
  • @monthly - Ejecutar la tarea especificada una vez al mes a la medianoche del primer día del mes. Equivale a 0 0 1 * * .
  • @weekly - Ejecutar la tarea especificada una vez por semana a la medianoche del domingo. Equivale a 0 0 * * 0 .
  • @daily - Ejecutar la tarea especificada una vez al día a la medianoche. Equivalente a 0 0 * * * .
  • @hourly - Ejecutar la tarea especificada una vez por hora al comienzo de la hora. Equivalente a 0 * * * * .
  • @reboot - Ejecutar la tarea especificada al inicio del sistema (tiempo de arranque).

Linux Crontab Comando #

El crontab El comando le permite instalar, ver o abrir un archivo crontab para editarlo:

  • crontab -e - Edite el archivo crontab o cree uno si aún no existe.
  • crontab -l - Muestra el contenido del archivo crontab.
  • crontab -r - Elimina tu archivo crontab actual.
  • crontab -i - Elimine su archivo crontab actual con un aviso antes de eliminarlo.
  • crontab -u <username> - Editar otro archivo crontab de usuario. Esta opción requiere privilegios de administrador del sistema.

El comando crontab abre el archivo crontab usando el editor especificado por VISUAL o EDITOR variables de entorno.

Variables crontab #

El demonio cron establece automáticamente varias variables de entorno.

  • La ruta predeterminada se establece en PATH=/usr/bin:/bin . Si el comando que está ejecutando no está presente en la ruta especificada por cron, puede usar la ruta absoluta al comando o cambiar el cron $PATH variable. No puede agregar implícitamente :$PATH como lo haría con un script normal.
  • El shell predeterminado se establece en /bin/sh . Para cambiar el shell diferente, use el SHELL variables.
  • Cron invoca el comando desde el directorio de inicio del usuario. El HOME La variable se puede establecer en el crontab.
  • La notificación por correo electrónico se envía al propietario del crontab. Para sobrescribir el comportamiento predeterminado, puede usar MAILTO variable de entorno con una lista (separada por comas) de todas las direcciones de correo electrónico que desea recibir las notificaciones por correo electrónico. Cuando MAILTO está definido pero vacío (MAILTO="" ), no se envía ningún correo.

Restricciones de Crontab #

El /etc/cron.deny y /etc/cron.allow files le permite controlar qué usuarios tienen acceso al crontab dominio. Los archivos constan de una lista de nombres de usuario, un nombre de usuario por línea.

Por defecto, solo el /etc/cron.deny El archivo existe y está vacío, lo que significa que todos los usuarios pueden usar el comando crontab. Si desea denegar el acceso a los comandos crontab a un usuario específico, agregue el nombre de usuario a este archivo.

Si /etc/cron.allow El archivo existe, solo los usuarios que se enumeran en este archivo pueden usar el crontab comando.

Si ninguno de los archivos existe, solo los usuarios con privilegios administrativos pueden usar el crontab comando.

Ejemplos de trabajos cron #

A continuación se muestran algunos ejemplos de trabajos cron que muestran cómo programar una tarea para que se ejecute en diferentes períodos de tiempo.

  • Ejecute un comando a las 15:00 todos los días de lunes a viernes:

    0 15 * * 1-5 command
  • Ejecute un script cada 5 minutos y redirija la salida estándar a dev null , solo se enviará el error estándar a la dirección de correo electrónico especificada:

    [email protected]
    */5 * * * * /path/to/script.sh > /dev/null
  • Ejecute dos comandos todos los lunes a las 3 p. m. (utilice el operador && entre los comandos):

    0 15 * * Mon command1 && command2
  • Ejecute un script PHP cada 2 minutos y escriba el resultado en un archivo:

    */2 * * * * /usr/bin/php /path/to/script.php >> /var/log/script.log
  • Ejecute un script todos los días, cada hora, en punto, de 8:00 a. m. a 4:00 p. m.:

    00 08-16 * * * /path/to/script.sh
  • Ejecute un script el primer lunes de cada mes, a las 7 a. m.

    0 7 1-7 * 1 /path/to/script.sh
  • Ejecute el script a las 9:15 p. m., los días 1 y 15 de cada mes:

    15 9 1,15 * * /path/to/script.sh
  • Establecer HOME personalizado , PATH , SHELL y MAILTO variables y ejecutar un comando cada minuto.

    HOME=/opt
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    SHELL=/usr/bin/zsh
    [email protected]
    
    */1 * * * * command

Conclusión #

Cron es un demonio que le permite programar tareas en una fecha y hora específicas.

Siéntase libre de dejar un comentario si tiene alguna pregunta.


Linux
  1. Programación de tareas con el comando cron de Linux

  2. Programación de tareas del sistema con Cron en Linux

  3. Automatice las tareas de los sistemas con crontab en CentOS 7

  4. Cómo programar trabajos de Cron con Crontab

  5. Cómo instalar, editar o eliminar trabajos cron en modo por lotes

Programación con cron &At

Cron Jobs y Crontab en Linux explicados

Entendiendo Crontab en Linux con ejemplos

Comando crontab de Linux para crear y administrar trabajos cron

Cómo programar trabajos con Cron en Linux

10 ejemplos útiles de cron para programar trabajos en Linux