En nuestro último post repasamos el uso del comando crontab. Recordemos que cuando lo invocamos con la opción -e, se abrirá la tabla de tareas agendadas del usuario actual. Cada línea que no está comentada (o vacía) en dicha tabla representa una tarea diferente. Veamos ahora los siguientes ejemplos de crontab para sumar al tema, junto con una experiencia personal para ilustrar.
Ejemplos de crontab
Para empezar, recordemos el formato que debe tener cada línea de la tabla:
Minuto Hora Mes DíaDelMes DíaDeLaSemana Comando
donde DíaDeLaSemana puede indicarse mediante un número del 0 (Domingo) al 6 (Sábado).
El servicio de cron se ejecuta cada minuto y chequea si hay alguna tarea cuyo criterio de ejecución coincida con el momento actual.
Los casos más simples son aquellos que utilizan un valor específico o un comodín para cada campo. Por ejemplo, usaremos comando
para representar un archivo ejecutable cualquiera:
- A las 12:45 pm durante el mes de enero, todos los días:
45 12 1 * * comando
- Todos los domingos a las 5:15 am:
15 05 * * 0 comando
- Solamente el primer día de cada mes a las 2:30 am:
30 02 * 1 * comando
En cada campo podemos especificar rangos o listas:
- A las 5:45 am y pm todos los días:
45 5,17 * * * comando
- Cada 15 minutos, de lunes a viernes en Enero, Marzo, y Mayo:
*/15 * 1,3,5 * 1-5 comando
Para más ejemplos, siempre podemos referirnos a The Linux Documentation Project.
¿Y si no funciona?
Acá es donde la cosa se pone interesante. En su momento escribí un script que funcionaba de maravilla cuando lo ejecutaba manualmente desde la línea de comandos. Sin embargo, al correrlo mediante cron tiraba errores por todas partes. Al rastrear esos errores me di cuenta que el script necesitaba de ciertas variables de entorno que (por supuesto) estaban disponibles en mi sesión de usuario pero no para cron al ejecutar el script. Finalmente, inspeccioné las variables de entorno con el comando env
(como vemos en la Fig. 1), identifiqué cuáles necesitaba el script, y las agregué al mismo. Asunto solucionado.
¡Aprovechá la oportunidad de suscribirte al blog para recibir en tu correo el post nuestro de cada día, novedades, y promociones exclusivas!
¡Hasta la próxima!