Los sistemas operativos Linux nos ofrecen una serie de comandos y ficheros del sistema que no todo el mundo conoce y que nos permiten llevar a cabo todo tipo de tareas. En lo referente a la automatización de procesos y scripts, es importante que conozcamos el funcionamiento de crontab, algo de lo que hablaremos a continuación.
Lo primero que debemos estar en consideración es que cuando hablamos de crontab, en realidad nos referimos a un archivo de texto que nos será de mucha ayuda para la ejecución de tareas programadas en el sistema de código abierto. Este debe tener un formato específico para que se pueda entender y ejecutar, tal y como os mostraremos a continuación.
Cron vs crontab en Linux
Tanto Cron como Crontab son dos ficheros que deben trabajar, sí o sí, de forma conjunta. Por un lado tenemos a Cron, un proceso, o daemon, que está siempre ejecutándose en el ordenador. Su función es la de asegurarse de que todas las tareas programadas se ejecutan en su momento justo. Y, por otro lado, tenemos a Crontab, un fichero de texto que es el que define las tareas que debe ejecutar y controlar Cron.
De esta manera, cada instante de tiempo, Cron comprueba la lista de tareas que hay definidas en el Crontab, y decide si es momento, o no, de ejecutarlas. En caso de que se lo sea, procede a cargar la instrucción definida; en caso contrario simplemente la ignora y queda a la espera hasta el siguiente instante.
Para que todo funcione como es debido, es necesario que el reloj de nuestro sistema esté bien configurado, para que no haya errores. Podemos sincronizar la hora del PC a través de los muchos servidores NTP que hay en Internet. Para comprobarlo podemos hacer uso de este comando:
timedatectl
Y, si la hora no coincide, podemos corregirla ejecutando este comando:
timedatectl set-timezone Europe/Madrid
A partir de aquí ya podemos programar diferentes tareas en Linux de manera exacta y echando mano de nuestra creatividad y necesidades.
Cómo crear y configurar crontab
Lo «complicado» del crontab es acertar con la definición de tiempo adecuada. El momento en el que se ejecutará cualquier proceso viene definido por 5 dígitos que se reparten de la siguiente manera de izquierda a derecha:
- Minuto
- Hora
- Día del mes
- Mes
- Día de la semana
Por ejemplo, si necesitamos que se ejecute una determinada tarea o el script que especifiquemos, todos los días 6 de marzo a las 19 horas, así lo especificamos en el fichero:
0 0 19 6 3 * usuario /ubicación_script/fichero.sh
En esta web podemos introducir la configuración de nuestro crontab para asegurarnos de que, realmente, se está ejecutando cuando se tiene que ejecutar. Además, en vez de los números, también podemos especificar algunas instrucciones para ciertos momentos concretos:
- @reboot: se ejecuta al iniciar el ordenador, pero no se vuelve a ejecutar.
- @yearly: solo se ejecutará una vez al año, el día 1 de enero.
- @monthly: se ejecutará una vez al mes, el día 1.
- @weekly: se ejecutará una vez a la semana, el primer minuto de la primera
- @daily: se ejecutará una vez al día, a medianoche.
- @hourly: el proceso se ejecutará cada hora, durante el primer minuto.
Evidentemente, este comando es personalizable dependiendo del momento y es imprescindible que dispongamos del script correspondiente para que se ejecute automáticamente.
Lo que debemos tener presente es que para aprovechar como es debido toda la funcionalidad que nos ofrece este comando, es casi imprescindible que tengamos ciertos conocimientos avanzados acerca de este sistema operativo de código abierto. De lo contrario podríamos hacer que su funcionamiento sea más defectuoso que beneficioso si no utilizamos bien esta herramienta integrada.
Comandos relacionados que podemos usar
Una vez nos dispongamos a utilizar este interesante comando de automatización en Linux, también nos podemos aprovechar de algunos comandos relacionados para aprovechar al máximo el mismo.
Y es que hay que tener en consideración que los parámetros que utilizamos en los diferentes comandos, tanto en Windows como en Linux, resultan elementos básicos a la hora de aprovechar al máximo sus funcionalidades. Esto es lo que sucede precisamente en el caso que nos ocupa. Además, no son muchos y nos resultará muy sencillo su uso.
- Crontab -e: se usa para editar los crontabs del sistema que tengamos creado, si no hay ninguno, este comando creará uno nuevo.
- Crontab -l: nos sirve para echar un vistazo a los crontab y ver el contenido del archivo.
- Crontab -r: elimina el archivo crontab actual.
- Crontab -i: muestra un mensaje de aviso antes de eliminar el crontab que hayamos elegido.
A partir de aquí ya entra en juego nuestra creatividad y conocimientos del sistema operativo de código abierto para sacar el máximo provecho a ambas herramientas.