Tabla de contenido
El post de esta noche lo dejo aquí para poder consultarlo cuando me haga falta. Acabo de terminar la guía EPG para Kodi. Para tenerla actualizada es necesario descargarla a diario, y para esto me hice un pequeño script que se encarga de ello. El problema (más bien la molestia) viene dado por que la verdad es que no me apetece tener que estar todos los días ejecutando dicho script. Por ello me he decidido a buscar un poco de información acerca de las tareas crontab, que la verdad es que las tenía abandonadas desde hace tiempo. Siempre está bien tener notas a mano para realizar pequeñas tareas como esta.
La herramienta en cuestión que voy a utilizar es una muy útil, llamada Cron. Sirve para programar y automatizar tareas en Ubuntu. Cron resulta muy útil a la hora de trabajar con un sistema operativo Debian (o derivados). Siempre es conveniente saber sacarle el máximo provecho a este tipo de funciones que nos ofrece. Si queremos, por ejemplo, que cada X horas se ejecute un archivo PHP, un script o cualquier cosa que necesitemos, pues no tenemos por qué dejar de hacer otras cosas para ejecutarlo manualmente. No tiene sentido. Para esto está Cron.
Bueno, ahora vamos al turrón del asunto. Evidentemente aquí no estará todo lo que podemos hacer con esta herramienta. Pero sacarle el máximo partido ya depende de las necesidades e imaginación que cada uno le ponga al asunto. Si alguien necesita más información, google será tu amigo.
CRONTAB
El comando crontab se utiliza en sistemas UNIX para programar la ejecución de otros comandos, es decir, para automatizar tareas. Podemos ver los crontabs que se están programados y también editarlos.
Para verlos, utilizamos el siguiente comando:
sudo crontab -l
… y para editarlos:
sudo crontab -e
FORMATO DE LAS TAREAS
Las tareas cron siguen una determinada sintaxis. Tienen 5 asteriscos seguidos del comando a ejecutar. Vamos a ver a continuación para qué sirve cada cosa.
* * * * * /bin/ejecutar/scriptdeturno.sh
Los 5 asteriscos
De izquierda a derecha, los asteriscos representan:
- Minutos: de 0 a 59.
- Horas: de 0 a 23.
- Día del mes: de 1 a 31.
- Mes: de 1 a 12.
- Día de la semana: de 0 a 6, siendo 0 el domingo.
Si se dejan los asteriscos, quiere decir: Se ejecutará «cada» minuto, de cada hora, de cada día de mes, de cada mes o día de la semana. Por ejemplo:
* * * * * /bin/ejecutar/scriptdeturno.sh
Este escript se ejecutará:
- Cada minuto
- De cada hora
- De cada día del mes
- De cada mes
- De cada día de la semana
Otro ejemplo, para aclararlo un poco más:
45 5 * * 1 /bin/ejecutar/scriptdeturno.sh
Estamos diciendo que queremos que este script se ejecute:
- En el minuto 45
- De las 5 de la noche
- De cada día del mes
- De cada mes
- Sólo si es lunes
En resumen, todos los viernes a las 5:45 horas se ejecutará el script.
Intervalos de tiempo
Para ejecutar un script de lunes a sabado a las 5:45 horas:
45 5 * * 1-6 /bin/ejecutar/scriptdeturno.sh
En el caso de que necesitemos ejecutar un script de lunes a viernes cada 10 minutos desde las 3:00 horas durante una hora:
0,10,20,30,40,50 3 * * 1-5 /bin/ejecutar/scriptdeturno.sh
Esto quizá puede ser largo. La sintaxis de crontab permite lo siguiente. Imaginemos que queremos ejecutarlo cada 5 minutos:
*/5 3 * * 1-5 /bin/ejecutar/scriptdeturno.sh
PALABRAS RESERVADAS DE CRON
Si has programado alguna vez, sabrás que muchas veces nos encontramos con palabras reservadas para facilitar el uso de programas o lenguajes de programación. Y cron no iba a ser una excepción, por eso aquí muestro algunas de las más comunes (que para lo que necesito me vienen muy bien). Aquí cada cual que lo configure según lo que necesite:
- @reboot: se ejecuta una única vez al inicio.
- @yearly/@annually: ejecutar una vez cada año.
- @monthly: ejecutar una vez al mes.
- @weekly: una vez a la semana.
- @daily/@midnight: una vez al día. Medio día/ media noche.
- @hourly: cada hora.
Si quisiésemos ejecutar el script a la media noche todos los días utilizaríamos:
@midnight /bin/ejecutar/scriptdeturno.sh
Y con esto yo cubro la necesidad que tenía de automatizar mi script para actualizar la guía de Kodi. Seguro que le dais uso a esta útil herramienta. Yo lo hago y va de maravilla.
2 Comentarios
Pues que quieres que te diga, llevo uns 10 tutoriales y ninguno explica como cojones se modifica el puto crontab -e, tras abrir una ventana de terminal y ejecutar el puto crontab -e, para guardar los cambios no hay absolutamente ninguna información. Estoy hasta la polla de esta mierda de sistema operativo que espero sólo utilizar esta vez en mi vida para solucionar esta mierda de problema.
Sencillísimo, los cojones.
Pues que quieres que te diga, igual es que no sabes leer. La terminal igual se te queda un poco grande. Quizás deberías probar con una intefaz gráfica, que para alguien con tu nivel de paciencia es posible que se adapte mejor.
Y si no, puedes utilizar eso que llaman google.com para encontrar lo que buscas. Aun que dudo que encuentres exactamente lo que quieres. Tendrás que molestar la neurona y leer un poco.
Otra opción será esa cosa que se llaman páginas man (prueba a escribir en una terminal man crontab, verás que sorpresa!!).
No dejes que la ignorancia empañe tu buen juicio. Salu2.