educación, informática y demás

2407 - Automatización de tareas

Programando tareas con Cron.d

Vamos a jugar con cron en nuestro sistema GNU/Linux Debian 12 para programar tareas.

Fichero de configuración de cron

Podemos observar la configuración de cron.

Ayuda de cron

Podemos usar man para consultar ayuda tanto de cron como de crontab. Comencemos con cron.

Ahora crontab

Permite gestionar tablas de ejecución de tareas para usuarios individuales, por ejemplo un usuario normal del sistema.

Vamos a mostrar las tareas programadas para el usuario actual, alumno.

Ahora vamos a crear una pequeña tarea

Ahora mismo nuestra tabla está vacía :_(

Ahora vamos a programar una tarea simple: que muestre los usuarios conectados al sistema a las y cinco de todas las horas de todos los días.

Guardamos y miramos si lo lista

Pues parece que ha funcionado!

Vamos a seguir metiendo tareas

A ver si lo hemos hecho bien

Vamos a ver si esto funciona…

Quiero quitar esta tarea, ¿cómo puedo hacerlo?

Oh my God! hemos borrado todo… ¿Cómo podemos borrar solo una entrada? Edito y borro 😀 Crontab -e y borramos lo que no queramos 😛

Crontab para administradores

Habitualmente cuando estamos administrando el sistema, editamos directamente el fichero /etc/crontab. También es muy habitual crear scripts para que sean ejecutados por crontab, dentro del script nos encargaremos de lidiar con las complejidades necesarias. Es decir, la idea es crear un script que nos solucione el problema y lanzarlo automáticamente con crontab.

No obstante, hay una diferencia con este tipo de scripts: no deberían mostrar nada en pantalla, puesto que se van a lanzar de forma programada y, posiblemente, sin una terminal de salida activada.

Esto nos obliga a utilizar ficheros de log para informar al operador, que en este caso será el administrador.

Ejemplo

Crea un script que realice una copia de seguridad del directorio /home y todo su contenido manteniendo la configuración de permisos en el directorio /backup. De esta forma, cuando se ejecute el script tendremos una copia del directorio /home en /backup/home. Si los ficheros en destino ya existen, sobrescribir.

Podríamos hacerlo de otra forma con lo que hemos aprendido del fichero crontab.

Podríamos haberlo hecho en una sola línea 🙂

Ahora tenemos que programar la tarea para que se ejecute. Editamos el fichero crontab puesto que lo vamos a ejecutar como root

Editamos el fichero crontab.

Este ejemplo está mal :O

Tenemos que darle la ruta absoluta para que no tenga problemas a la hora de encontrar el ejecutable.

La solución es poner la ruta absoluta y, sería muy buena idea, meter los scripts de sistema en un directorio de binarios, si queremos en uno especial de scripts.

Ahora si, guardamos y a ver que pasa.

Vamos a probar si esto funciona 😀

Cuestiones avanzadas

Hemos visto cómo podemos programar la ejecución de una tarea, consistente en un comando o aplicación, que puede ser un script, en un momento concreto del tiempo, pero podríamos…

  • ¿Programar tareas para que se ejecuten en varios minutos distintos, por ejemplo, a las en punto a las y 20 y a las menos veinte?
  • ¿Podríamos programar tareas para que se ejecuten cada cinco minutos?

Dejar una respuesta