Ejemplos de Crontab

Introducción

El comando crontab se utiliza en sistemas UNIX para programar la ejecución de otros comandos, es decir, para automatizar tareas.

Para verlos:

sudo crontab -l

Para editarlos:

sudo crontab -e

Borra el crontab

sudo crontab -d

Define el directorio del crontab del usuario (este debe tener permisos de escritura y ejecución del usuario)

crontab -c dir

Prefijo para manejar el crontab de otro usuario, ejemplos:

$ sudo crontab -l -u root
$ sudo crontab -e usuario2
# crontab -d -u usuario

Formato de las tareas

m h dom mon dow user command > /dev/null 2>&1

De izquierda a derecha.
m = corresponde al minuto en que se va a ejecutar el script, el valor va de 0 a 59
h = la hora exacta, se maneja el formato de 24 horas, los valores van de 0 a 23, siendo 0 las 12:00 de la medianoche.
dom = hace referencia al día del mes, por ejemplo se puede especificar 15 si se quiere ejecutar cada dia 15 del mes.
dow = significa el día de la semana, puede ser numérico (0 a 7, donde 0 y 7 son domingo) o las 3 primeras letras del día en inglés: mon, tue, wed, thu, fri, sat, sun.
user = define el usuario que va a ejecutar el comando, puede ser root, u otro usuario diferente siempre y cuando tenga permisos de ejecución del script.
command = refiere al comando o a la ruta absoluta del script a ejecutar, ejemplo: /home/usuario/scripts/test1.sh, si acaso llama a un script este debe ser ejecutable.
Al final se añade > /dev/null 2>&1 para que cualquier dato generado por la ejecución de este proceso se descarte y sea enviado al dispositivo nulo del sistema (/dev/null) y que también se envíe la salida de STDERR hacia STDOUT.

Ejemplos

Ejecutará el script test1.sh a las 10:15 a.m. todos los días

15 10 * * * usuario /home/usuario/scripts/test1.sh

Usuario root ejecutará una actualización todos los domingos a las 10:00 a.m

00 10 * * 0 root apt-get -y update

El día 20 de noviembre a las 7:30 el usuario correrá el script

30 7 20 11 * usuario /home/usuario/scripts/test1.sh

El usertest ejecutará el script el día 10 de febrero a las 00:30 a.m. y que sea domingo.

30 0 10 2 sun usertest /home/usertest/scripts/test1.sh

Se ejecutará a las 5:30 de la tarde todos los días de lunes a viernes.

30 17 * * 1,2,3,4,5 /home/usuario/scripts/test1.sh

Ejecutar un script de lunes a viernes a las 2:30 horas:

30 2 * * 1-5 /home/usertest/scripts/test1.sh

Ejecutar un script de lunes a viernes cada 10 minutos desde las 2:00 horas durante una hora:

0,10,20,30,40,50 2 * * 1-5 /home/usertest/scripts/test1.sh
# ó
*/10 2 * * 1-5 /home/usertest/scripts/test1.sh

Enviará un correo todos los días a las 8:00 a.m. y 8:00 p.m.

0 8,20 * * * usertest mail -s "sistema funcionando" usertest@dominio.com

Podemos usar cualquier otro programa ejecutable, ejemplos:

*/15 * * * * /usr/bin/curl http://dominio.com/test1.php > /dev/null 2>&1
*/15 * * * * /usr/bin/curl -u usertest:password http://dominio.com/test1.php
*/15 * * * * wget -q -O http://dominio.com/test1.php
*/15 * * * * /usr/bin/php /home/usertest/scripts/test1.php > /dev/null 2>&1

Cadenas especiales

@reboot Ejecuta una vez, al inicio
@yearly ejecuta sólo una vez al año: 0 0 1 1 *
@annually igual que @yearly
@monthly ejecuta una vez al mes, el día primero: 0 0 1 * *
@weekly Semanal el primer minuto de la primer hora de la semana. 0 0 * * 0.
@daily diario, a las 12:00A.M. 0 0 * * *
@midnight igual que @daily
@hourly al primer minuto de cada hora: 0 * * * *

@hourly usertest /home/usertest/scripts/test1.sh
@monthly usertest /home/usertest/scripts/test1.sh
@daily root apt-get update && apt-get -y upgrade
(Visited 144 times, 1 visits today)
Puedes saltar al final y dejar una respuesta. Hacer ping no está permitido actualmente.