GNU/Linux >> Tutoriales Linux >  >> Linux

10 ejemplos útiles de cron para programar trabajos en Linux

El sistema GNU/Linux admite varias utilidades para programar tareas. La utilidad cron es la más admitida. Le permite programar tareas para que se ejecuten en segundo plano a intervalos regulares. La utilidad cron utiliza una tabla (crontab) con una lista de scripts o comandos a ejecutar y la hora a la que se ejecutarán.

Programación de trabajos

Los usuarios normales pueden usar el comando crontab para administrar sus trabajos. Este comando se puede llamar de cuatro maneras diferentes:

Comando Función
crontab -l Lista de trabajos para el usuario actual
crontab -r Eliminar todos los trabajos para los usuarios actuales.
crontab -e Editar trabajos para el usuario actual.
crontab [nombre de archivo] Elimine todos los trabajos y reemplácelos con los trabajos leídos de [nombre de archivo]. Si no se especifica ningún archivo, se utilizará stdin.

Cómo editar y ver crontab

Al editar trabajos con el “crontab -e “, se iniciará un editor (vi por defecto, a menos que la variable de entorno EDITOR se haya configurado en algo diferente). El archivo que se está editando tendrá un trabajo por línea. Se permiten líneas vacías y los comentarios comienzan su línea con un símbolo de almohadilla (#).

# crontab -e

Cuando ejecuta el comando "crontab -e" sin ninguna opción, el crontab del usuario actualmente conectado se editará de forma predeterminada. Para editar el crontab de otro usuario, puede usar la opción -u con el comando crontab. Por ejemplo, para editar el crontab del usuario john.

# crontab -u john -e

De manera similar, para ver el crontab del usuario actual, use el comando “crontab -l ” comando.

# crontab -l

Y para enumerar el crontab de un usuario específico, use el siguiente comando.

# crontab -u john -l

Archivos de configuración de Cron

El proceso en segundo plano de cron está mayormente inactivo. Se activa una vez por minuto y verifica /etc/crontab, /etc/cron.d y los archivos de la tabla cron del usuario y determina si hay algún trabajo que deba ejecutarse.

La siguiente tabla resume el propósito de los distintos archivos y directorios utilizados por cron. El conocimiento de estos archivos y directorios lo ayudará a solucionar cualquier problema, así como a comprender cron con más detalle.

Archivo Propósito
/etc/init.d/crond Inicia el demonio cron en el arranque del sistema.
/var/log/cron Mensajes del sistema relacionados con el proceso cron . Útil para solucionar problemas.
/var/spool/cron/[nombre de usuario] Los archivos crontab del usuario se almacenan en el directorio /var/spool/cron.
/etc/cron.permitir Especifica los usuarios que pueden crear una tabla cron.
/etc/cron.deny Especifica los usuarios que no tienen permiso para crear una tabla cron.
/etc/crontab La tabla cron del sistema que tiene comandos para ejecutar scripts ubicados en los siguientes directorios: /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly y /etc/cron.monthly.
/etc/cron.d Un directorio que contiene tablas cron para trabajos que deben ejecutarse en un horario que no sea por hora, diario, semanal o mensual.
/etc/cron.horaria Directorio que contiene scripts del sistema para ejecutar cada hora.
/etc/cron.daily Directorio que contiene scripts del sistema para ejecutarse diariamente.
/etc/cron.weekly Directorio que contiene scripts del sistema para ejecutar semanalmente.
/etc/cron.monthly Directorio que contiene scripts del sistema para ejecutar mensualmente.

Sintaxis crontab

Los trabajos de usuarios individuales se almacenan en el directorio /var/spool/cron en archivos que coincidan con los nombres de usuario. Estos archivos siempre pertenecen al usuario raíz. Los archivos en /var/spool/cron no se editan directamente. En su lugar, se utiliza un programa llamado crontab para manipularlos. La siguiente figura muestra la sintaxis de un trabajo cron.

Cada línea en un archivo define un trabajo. Hay 6 campos en una línea. Los primeros 5 campos definen el tiempo, el campo final contiene el comando para ejecutar. Puede ser cualquier tipo de comando o script de shell. Los primeros 5 campos tienen el siguiente formato:

Campo Rango
Minutos 0-59
Horas 0-23
Día del mes 1-31
Mes 0-12
Día de la semana 0-7

Ejemplos de trabajos cron

1. Programe un trabajo el 2 de febrero de cada año

Debe ejecutar un script de copia de seguridad una vez al año en una fecha específica del mes de febrero. La sintaxis se muestra a continuación.

0 9 2 2 *   /usr/local/bin/yearly_backup

2. Programe un trabajo cada hora al quinto minuto, todos los días

Utilice el siguiente comando para ejecutar un script cada hora en el quinto minuto, todos los días:

5 * * * *      $HOME/bin/daily.job >> $HOME/tmp/out  2>&1

3. Programe un trabajo 5 minutos después de la medianoche todos los días

Use el siguiente comando para ejecutar 5 minutos después de la medianoche todos los días:

5 0 * * *      $HOME/bin/daily.job >> $HOME/tmp/out  2>&1

4. Programe un trabajo a una hora específica el primer día de cada mes

Use el siguiente comando para ejecutar a las 2:15 p. m. el primero de cada mes:

15 14 1 * * *     $HOME/bin/monthly

5. Programe un trabajo a una hora específica solo entre semana (excluyendo sábados y domingos)

Use el siguiente comando para ejecutar a las 10 p.m. los días de semana:

0 22 * * 1-5  $HOME/bin/weekday.job >> $HOME/tmp/out  2>&1

6. Programación de múltiples trabajos en un solo trabajo cron

También podemos programar varios trabajos en un solo trabajo cron utilizando trabajos separados por punto y coma (;) como se muestra a continuación:

0 12 * * * /var/tmp/script01.sh; /var/tmp/script02.sh

7. Uso de rangos para especificar horas de inicio

Los rangos se pueden especificar mediante el uso de un guión. Un valor de 1 a 5 indica que este campo es válido para los números del 1 al 5. Si usa un nombre en lugar de un número, no puede especificar un rango. A continuación se muestra un ejemplo de especificación de rangos. El trabajo está programado para ejecutarse cada hora desde las 3 p.m. Hasta las 22:00

* 3-10 * * * /var/tmp/script.sh

8. Uso de valores de paso para especificar horas de inicio

Los valores de paso se pueden utilizar junto con rangos. Para especificar un valor de paso, siga el rango con una barra inclinada (/) y un número. El número especificado es el valor del paso. Por ejemplo, lo siguiente especifica que debe coincidir cada tercer valor (en este caso, 2, 5, 8 y 11):

* 0-12/3 * * *  /var/tmp/script.sh

Los valores de paso también se pueden utilizar con asteriscos. El valor */3 en el campo de la hora coincidiría cada tres horas (0, 3, 6, 9, 12, 15, 18 y 21).

9. Uso de listas para especificar horas de inicio

Las listas también son aceptables; cada elemento de una lista está separado por una coma. Es común usar listas junto con rangos, así:

1-15,31-45 * * * *  /var/tmp/script.sh

Este ejemplo coincide con todos los números (minutos en nuestro caso) del 1 al 15 y del 31 al 45. Si usa un nombre en lugar de un número, no puede especificar una lista.

10. Programe un trabajo a las 4:45 a.m., los días 1, 10 y 22 de cada mes

A continuación se muestra un ejemplo de ejecución de un trabajo en un momento específico en algunos días específicos del mes.

45 4 1,10,22 * * /apps/bin/backup.sh 

Macros Crontab

Podemos agregar macros en el archivo crontab. Por ejemplo, use lo siguiente para reiniciar “my_script” después de cada reinicio:

@reboot  /var/tmp/my_script

El siguiente es un resumen de algunas macros más:

Entrada Descripción Equivalente a
@reboot Ejecutar una vez al inicio Ninguno
@semanalmente Ejecutar una vez a la semana 0 0 * * 0
@diariamente Ejecutar una vez al día 0 0 * * *
@medianoche (igual que @daily) 0 0 * * *
@por hora Ejecutar una vez por hora 0 * * * *

Tratar con la salida

Un script a menudo imprime algo en la pantalla, ya sea para depuración, actualizaciones de estado o para registrar un error. Todo lo que un trabajo imprime en la pantalla se envía en un correo electrónico al usuario actual, que se puede anular con la variable MAILTO dentro de crontab.

# crontab -l
MAIL=john
0 2 * * * /apps/bin/backup.sh
Cómo programar trabajos con Cron en Linux
Definición de trabajos del sistema usando Cron en Linux
UNIX/Linux:cómo crontab valida el acceso en función de los archivos cron.allow y cron.deny
CentOS/RHEL :Conceptos básicos de anacron (Qué es anacron y cómo configurarlo)
CentOS / RHEL:Guía para principiantes de cron


Linux
  1. Cómo usar cron en Linux

  2. 12 ejemplos útiles de comandos Wget en Linux

  3. Comando ls en Linux:17 ejemplos útiles explicados

  4. Cómo programar trabajos de Cron con Crontab

  5. 6 ejemplos de comandos crontab de Linux

Cron Jobs y Crontab en Linux explicados

Entendiendo Crontab en Linux con ejemplos

Comando crontab de Linux para crear y administrar trabajos cron

12 ejemplos útiles de comandos de fecha de Linux

Linux Crontab:15 impresionantes ejemplos de trabajo de Cron

Cómo programar trabajos con Cron en Linux