Comandos: CRON y CRONTAB

¿Qué son?

“ En el sistema operativo Unix, cron es un administrador regular de procesos en segundo plano (demonio) que ejecuta procesos o guiones a intervalos regulares (por ejemplo, cada minuto, día, semana o mes). Los procesos que deben ejecutarse y la hora a la que deben hacerlo se especifican en el archivo crontab. El nombre cron proviene del griego chronos que significa “tiempo”. Cron se puede definir como el equivalente a Tareas Programadas de Windows.” Wikipedia: https://es.wikipedia.org/wiki/Cron_(Unix)

Otros sistemas operativos: - Virtualización: TxADM con multipass - Containers: lo veremos en la asignatura de Cloud Computing (Especialidad o Optativa)

Herramientas de virtualización: - Gestor de máquinas: https://multipass.run/install - VirtualBox: https://www.virtualbox.org/ - VMware

Recursos explicativos de CRON: - https://blog.desdelinux.net/cron-crontab-explicados/ - https://www.redeszone.net/tutoriales/servidores/cron-crontab-linux-programar-tareas/ - https://docs.oracle.com/cd/E38897_01/html/E23086/sysrescron-1.html

Alternativa en Windows: - https://active-directory-wp.com/docs/Usage/How_to_add_a_cron_job_on_Windows/Scheduled_tasks_and_cron_jobs_on_Windows/

Ventajas

  • Alto graodo de expresividad periodica

  • La periodicidad está gestionada por el SO.

    • El tiempo es relativo en cada equipo.

    • El SO se encarga de gestionar el proceso.

  • Podemos redigir la salida del programa (stdout) a un fichero.

Vamos a crear un proceso donde su lanzamiento esté gestionado por CRON

Creamos un fichero ejecutable del SO. En este caso un SH: launcher.sh

#!/bin/sh
python3 ~/myscript.py

Modificamos su permisos para que se ejecutable:

chmod 775 launcher.sh

Comprobamos su funcionamiento:

sh launcher.sh
.\launcher.sh

Incorporamos su ejecución periódica dentro de un fichero de crontab. Para ello, ejecutamos:

crontab -e

y tras solicitarnos el tipo de editor, incluimos una de las lineas siguientes:

@reboot sleep 60 && sh /home/user/launcher.sh >> /home/user/myfile.log

* * * * * sh /home/user/launcher.sh >> /home/user/otro.log

URL útil: - https://crontab.guru/

Podemos chequear si el servicio está funcionando:

sudo service cron status
sudo service cron activate

Actividad

Programa un script para que almacene el valor “actual” del precio del crudo. Vamos a suponer que en cada instante de tiempo pasa 1 minuto, y ese minuto supone un día más!!! Sí no hay valor ese día, se guarda un nan.

Date
1986-01-02  25.56   >> Primera vez: tiempo 0
1986-01-03  26.00   >> Despues de un minuto
                    >> minuto 2 y minuto 3 no contiene valores: 1986-01-04 y 1986-01-05
1986-01-06  26.53   >> minuto 4
...