Saltar a contenido

Crontab.

  • Se utiliza para automatizar tareas a ciertas horas del día.

  • El demonio cron es el que se encarga del correcto funcionamiento de crontab.

  • Se ejecuta en segundo plano.

  • Cada usuario, incluido root, tiene su propio fichero de crontab, cuyas tareas se ejecutan aunque su usuario no se encuentre logueado en ese momento.

  • El fichero de opciones se almacena en /var/spool/cron/crontabs, pero solo se debe modificar con la herramienta crontab.

  • Los errores se registran en /var/log/syslog.

Tip

Más información con el comando “man crontab”

Configuración.

crontab [-u user] [-l | -r | -e] [-i] 
Opción
Uso
–e Edita el fichero de crontab.
l Lista las tareas programadas.
-r Elimina las tareas programadas de un usuario
-i Pregunta si estamos seguros de eliminar las tareas programadas.

SUDO

Para crear una tarea programada que use permisos de administrador editamos el crontab de root: sudo crontab -e
  • En el propio documento de crontab tenéis una explicación de su uso (fijarse en la última línea):
Opción
Significado
m Minuto en el que se tiene que ejecutar la tarea (0-59).
h Hora en el que se tiene que ejecutar la tarea (0-23).
dom Día del mes en el que se tiene que ejecutar la tarea (1-31).
mon Mes en el que se tiene que ejecutar la tarea (1-12).
dow Día de la semana en el que se tiene que ejecutar la tarea (0-7).
command Tarea programada.
  • Caracteres especiales:

    💥 *: Representa cualquier cosa, por ejemplo cualquier día o mes.

    💥 1,3,5: Se puede intercalar con la coma varios días, meses, etc...

    💥 1-12: Se puede usar para incluir todos los números entre 1 y 12.

  • Palabras reservadas:

    💥 @yearly: ejecutar cada año.

    💥 @monthly: ejecutar una vez al mes.

    💥 @weekly: una vez a la semana.

    💥 @daily/@midnight: una vez al día.

    💥 @hourly: cada hora.

    💥 @reboot: Al arrancar la máquina.

Ejemplos.

A las 00:00 el día 1 de Enero, caiga cuando caiga (lunes – domingo)

0 0 1 1 * cd /home/salva; bash miscript.sh

Todos los días a las 08:30

30 8 * * * cd /home/salva; bash miscript.sh

El día 1 de cada mes, cada hora en punto.

0 * 1 * * cd /home/salva; bash miscript.sh

Todos los lunes a las 09:00.

0 9 * * 1 cd /home/salva; bash miscript.sh

Ejecutar cada hora.

@hourly cd /bin/ejecutar; ./script.sh

Ejecutar con cada reinicio.

@reboot cd /bin/ejecutar; ./script.sh

Permisos.

El crontab ejecuta las tareas con los permisos que tiene el usuario que lo haya configurado, por lo que los scripts programados deben ser ejecutables y debemos tener permisos.