GNU/Linux >> Tutoriales Linux >  >> Linux

Linux Crontab:15 impresionantes ejemplos de trabajo de Cron

Un administrador de sistemas Linux experimentado conoce la importancia de ejecutar los trabajos de mantenimiento de rutina en segundo plano automáticamente.

La utilidad Cron de Linux es una forma efectiva de programar un trabajo de rutina en segundo plano a una hora y/o día específico de manera continua.

Este artículo es parte de la serie en curso Consejos de productividad para geeks. En este artículo, revisemos 15 impresionantes ejemplos de programación de trabajos crontab.

Formato Crontab de Linux

MIN HOUR DOM MON DOW CMD
Tabla:Campos de Crontab y rangos permitidos (sintaxis de Crontab de Linux)
Campo Descripción Valor permitido
MÍNIMO Campo de minutos 0 a 59
HORA Campo de hora 0 a 23
DOM Día del mes 1-31
LUN Campo de mes 1-12
DOW Día de la semana 0-6
CMD Comando Cualquier comando a ejecutar.

1. Programación de un trabajo para una hora específica

El uso básico de cron es ejecutar un trabajo en un tiempo específico como se muestra a continuación. Esto ejecutará el script de shell de copia de seguridad completa (backup completo) el 10 de junio a las 08:30 a.m. .

Tenga en cuenta que el campo de hora utiliza el formato de 24 horas. Entonces, para las 8 a. m. use 8 y para las 8 p. m. use 20.

30 08 10 06 * /home/ramesh/full-backup
  • 30 – Minuto 30
  • 08 – 08 a.m.
  • 10 – 10º día
  • 06 – 6.º mes (junio)
  • * – Todos los días de la semana

2. Programe un trabajo para más de una instancia (por ejemplo, dos veces al día)

El siguiente script realiza una copia de seguridad incremental dos veces al día todos los días.

Este ejemplo ejecuta el script shell de copia de seguridad incremental especificado (copia de seguridad incremental) a las 11:00 ya las 16:00 todos los días. El valor separado por comas en un campo especifica que el comando debe ejecutarse en todo el tiempo mencionado.

00 11,16 * * * /home/ramesh/bin/incremental-backup
  • 00 – Minuto 0 (parte superior de la hora)
  • 11,16 – 11:00 y 16:00
  • * – Todos los días
  • * – Todos los meses
  • * – Todos los días de la semana

3. Programe un trabajo para un intervalo de tiempo específico (p. ej., solo entre semana)

Si desea que se programe un trabajo para cada hora dentro de un intervalo de tiempo específico, use lo siguiente.

Cron Job todos los días durante el horario laboral

Este ejemplo verifica el estado de la base de datos todos los días (incluidos los fines de semana) durante el horario laboral de 9 a. m. a 6 p. m.

00 09-18 * * * /home/ramesh/bin/check-db-status
  • 00 – Minuto 0 (parte superior de la hora)
  • 09-18 – 9h, 10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h, 18h
  • * – Todos los días
  • * – Todos los meses
  • * – Todos los días de la semana

Cron Job todos los días de la semana durante el horario laboral

Este ejemplo verifica el estado de la base de datos todos los días de la semana (es decir, excluyendo los sábados y domingos) durante el horario laboral de 9 a. m. a 6 p. m.

00 09-18 * * 1-5 /home/ramesh/bin/check-db-status
  • 00 – Minuto 0 (parte superior de la hora)
  • 09-18 – 9h, 10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h, 18h
  • * – Todos los días
  • * – Todos los meses
  • 1-5 -lunes, martes, miércoles, jueves y viernes (todos los días laborables)

4. ¿Cómo ver las entradas de Crontab?

Ver las entradas Crontab del usuario que ha iniciado sesión actualmente

Para ver sus entradas de crontab, escriba crontab -l desde su cuenta de Unix como se muestra a continuación.

ramesh@dev-db$ crontab -l
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

[Note: This displays crontab of the current logged in user]

Ver entradas de Root Crontab

Inicie sesión como usuario root (su – root) y haga crontab -l como se muestra a continuación.

root@dev-db# crontab -l
no crontab for root

Crontab HowTo:Ver las entradas de Crontabs de otros usuarios de Linux

Para ver las entradas de crontab de otros usuarios de Linux, inicie sesión en la raíz y use -u {nombre de usuario} -l como se muestra a continuación.

root@dev-db# crontab -u sathiya -l
@monthly /home/sathiya/monthly-backup
00 09-18 * * * /home/sathiya/check-db-status

5. ¿Cómo editar entradas de crontab?

Editar las entradas Crontab del usuario que ha iniciado sesión actualmente

Para editar entradas crontab, use crontab -e como se muestra a continuación. De forma predeterminada, esto editará el crontab actual de los usuarios que iniciaron sesión.

ramesh@dev-db$ crontab -e
@yearly /home/ramesh/centos/bin/annual-maintenance
*/10 * * * * /home/ramesh/debian/bin/check-disk-space
~
"/tmp/crontab.XXXXyjWkHw" 2L, 83C

[Note: This will open the crontab file in Vim editor for editing.
Please note cron created a temporary /tmp/crontab.XX... ]

Cuando guarde el archivo temporal anterior con :wq, guardará el crontab y mostrará el siguiente mensaje que indica que el crontab se modificó correctamente.

~
"crontab.XXXXyjWkHw" 2L, 83C written
crontab: installing new crontab

Editar entradas de Root Crontab

Inicie sesión como usuario root (su – root) y haga crontab -e como se muestra a continuación.

root@dev-db# crontab -e

Editar las entradas del archivo Crontab de otros usuarios de Linux

Para editar las entradas de crontab de otros usuarios de Linux, inicie sesión en la raíz y use -u {nombre de usuario} -e como se muestra a continuación.

root@dev-db# crontab -u sathiya -e
@monthly /home/sathiya/fedora/bin/monthly-backup
00 09-18 * * * /home/sathiya/ubuntu/bin/check-db-status
~
~
~
"/tmp/crontab.XXXXyjWkHw" 2L, 83C

6. Programe un trabajo para cada minuto usando Cron.

Idealmente, es posible que no tenga el requisito de programar un trabajo cada minuto. Pero comprender este ejemplo lo ayudará a comprender los otros ejemplos mencionados a continuación en este artículo.

* * * * * CMD

El * significa todas las unidades posibles, es decir, cada minuto de cada hora durante todo el año. Más que usar este * directamente, te resultará muy útil en los siguientes casos.

  • Cuando especifica */5 en el campo de minutos significa cada 5 minutos.
  • Cuando especifica 0-10/2 en el campo de minutos significa cada 2 minutos en los primeros 10 minutos.
  • Por lo tanto, la convención anterior se puede utilizar para los otros 4 campos.

7. Programe un trabajo cron en segundo plano cada 10 minutos.

Utilice lo siguiente, si desea comprobar el espacio en disco cada 10 minutos.

*/10 * * * * /home/ramesh/check-disk-space

Ejecuta el comando especificado check-disk-space cada 10 minutos durante todo el año. Pero es posible que tenga el requisito de ejecutar el comando solo durante el horario de oficina o viceversa. Los ejemplos anteriores muestran cómo hacer esas cosas.

En lugar de especificar valores en los 5 campos, podemos especificarlo usando una sola palabra clave como se menciona a continuación.

Hay casos especiales en los que, en lugar de los 5 campos anteriores, puede usar @ seguido de una palabra clave, como reinicio, medianoche, anual, por hora.

Tabla:Palabras clave especiales de Cron y su significado
Palabra clave Equivalente
@anualmente 0 0 1 1 *
@diariamente 0 0 * * *
@por hora 0 * * * *
@reboot Ejecutar al inicio.

8. Programe un trabajo para el primer minuto de cada año usando @yearly

Si desea que un trabajo se ejecute en el primer minuto de cada año, puede usar @yearly palabra clave cron como se muestra a continuación.

Esto ejecutará el mantenimiento anual del sistema mediante el script shell de mantenimiento anual a las 00:00 del 1 de enero de cada año.

@yearly /home/ramesh/red-hat/bin/annual-maintenance

9. Programe un trabajo cron al comienzo de cada mes usando @monthly

Es tan similar al @yearly como el anterior. Pero ejecuta el comando mensualmente una vez usando @monthly palabra clave cron.

Esto ejecutará la copia de seguridad en cinta del script de shell a las 00:00 el 1 de cada mes.

@monthly /home/ramesh/suse/bin/tape-backup

10. Programe un trabajo en segundo plano todos los días usando @daily

Usando el @daily cron, esto hará una limpieza diaria del archivo de registro utilizando el script de shell cleanup-logs a las 00:00 todos los días.

@daily /home/ramesh/arch-linux/bin/cleanup-logs "day started"

11. ¿Cómo ejecutar un comando de Linux después de cada reinicio usando @reboot?

Usando el @reboot palabra clave cron, esto ejecutará el comando especificado una vez que la máquina haya arrancado cada vez.

@reboot CMD

12. ¿Cómo deshabilitar/redirigir la salida de correo Crontab usando la palabra clave MAIL?

De forma predeterminada, crontab envía la salida del trabajo al usuario que programó el trabajo. Si desea redirigir la salida a un usuario específico, agregue o actualice la variable MAIL en el crontab como se muestra a continuación.

ramesh@dev-db$ crontab -l
MAIL="ramesh"

@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

[Note: Crontab of the current logged in user with MAIL variable]


Si desea que el correo no se envíe a ninguna parte, es decir, detener el envío de la salida crontab por correo electrónico, agregue o actualice la variable MAIL en crontab como se muestra a continuación.

MAIL=""

13. Cómo ejecutar trabajos cron de Linux cada segundo usando Crontab.

No puede programar un cronjob cada segundo. Porque en cron la unidad mínima que puede especificar es minuto. En un escenario típico, no hay motivo para que la mayoría de nosotros ejecutemos un trabajo cada segundo en el sistema.

14. Especifique la variable PATH en Crontab

Todos los ejemplos anteriores especificamos la ruta absoluta del comando de Linux o el script de shell que debe ejecutarse.

Por ejemplo, en lugar de especificar /home/ramesh/tape-backup, si solo desea especificar tape-backup, agregue la ruta /home/ramesh a la variable PATH en el crontab como se muestra a continuación.

ramesh@dev-db$ crontab -l

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/ramesh

@yearly annual-maintenance
*/10 * * * * check-disk-space

[Note: Crontab of the current logged in user with PATH variable]

15. Instalación de Crontab desde un archivo Cron

En lugar de editar directamente el archivo crontab, también puede agregar todas las entradas a un archivo cron primero. Una vez que tenga todas esas entradas en el archivo, puede cargarlas o instalarlas en el cron como se muestra a continuación.

ramesh@dev-db$ crontab -l
no crontab for ramesh

$ cat cron-file.txt
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

ramesh@dev-db$ crontab cron-file.txt

ramesh@dev-db$ crontab -l
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

Nota: Esto instalará el cron-file.txt en su crontab, que también eliminará sus antiguas entradas de cron. Por lo tanto, tenga cuidado al cargar entradas cron desde un archivo cron.txt.

Tutoriales adicionales de Cron

  • Cron Vs Anacron:Cómo configurar Anacron en Linux (con un ejemplo)
  • Cómo ejecutar Cron cada 5 minutos, segundos, horas, días, meses
  • 6 ejemplos de comandos crontab de Linux
  • Cómo instalar, editar o eliminar trabajos cron en modo por lotes
  • Comprenda los comandos at, atq, atrm, batch usando 9 ejemplos

Impresionantes artículos de Linux

Los siguientes son algunos 15 ejemplos impresionantes artículos que pueden resultarle útiles.

  • ¡Mami, lo encontré! — 15 ejemplos prácticos de comandos de búsqueda de Linux
  • 15 ejemplos para dominar el historial de línea de comandos de Linux
  • Comando Unix LS:15 ejemplos prácticos
  • ¡Contrólate con el Grep! – 15 ejemplos prácticos de comandos Grep

Linux
  1. 4 alternativas a cron en Linux

  2. Cómo usar cron en Linux

  3. Uso de at para trabajos cron de un solo uso en Linux

  4. 6 ejemplos de comandos crontab de Linux

  5. el trabajo cron ocasionalmente no se ejecuta

10 impresionantes ejemplos de comandos Awk en Linux

Cron Jobs y Crontab en Linux explicados

Entendiendo Crontab en Linux con ejemplos

¿Qué es un trabajo cron en Linux?

10 ejemplos útiles de cron para programar trabajos en Linux

Ejemplos de comandos id en Linux