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
...