El uso de Cron para perezosos. Linux y pecados capitales segunda parte
Este es el segundo artículo de una serie en la que utilizamos la lista de lo que la Iglesia Católica denomina “pecados capitales” como excusa para conocer más sobre comandos y programas del mundo Linux. En este caso continuamos hablando sobre el uso de Cron que será de gran utilidad para quienes cultivan la pereza.
Dado que estamos viviendo una época de gente de ofensa fácil permítanme aclarar, antes de entrar en materia, que no es mi intención burlarme de las creencias religiosas de nadie. En todo caso es una auto burla. Pasé gran parte del año ochenta estudiando catecismo para luego de haber tomado la Primera Comunión no volver a pisar una iglesia salvo que algún acontecimiento familiar lo requiriera. Tengo que recuperar ese tiempo de alguna manera.
Para qué sirven Cron y Crontab
Habíamos dicho que Cron es un demonio, es decir un programa que se ejecuta en segundo plano sin que el usuario tenga intervención. Buscando información adicional para este artículo descubrí que lo de traducir daemon (La forma en que los sistemas Unix y derivados denominan a este tipo de programas) como demonio es un error muy extendido, pero no voy a corregirlo. Estamos hablando de pecados, tiene que haber por lo menos un demonio.
La función de Cron es ejecutar, en un momento especificado previamente, una determinada tarea. La mayoría de las veces es por necesidades del sistema, aunque los usuarios podemos indicarle otras a partir de la edición de un archivo de texto conocido como crontab.
En el post anterior habíamos dicho que los comandos para crear crontab son:
crontab –e
para el usuario por defecto
O
crontab –u nombre_de_usuario
para cualquiera de los otros.
Crontab es un archivo de texto que le brinda a Cron las instrucciones sobre qué debe hacer y cuando hacerlo.
Acerca del uso de Cron mediante crontab
Para crear nuestro crontab debemos tener en cuenta lo siguiente:
- Se utiliza una línea para cada tarea.
- Se debe indicar la fecha y hora de ejecución de la tarea. En caso de que se trate de una tarea que requiera periodicidad. Por ejemplo, todos los miércoles a las 5 de la mañana, el resto de los parámetros se reemplazan por asteriscos (*).
- En caso de que se quiera asignar más de un valor para un determinado parámetro cada valor debe separarse por una coma.
- Los parámetros se separan con un espacio.
- Se debe conocer el directorio donde está el lanzador del comando
Por ejemplo, si queremos que el ordenador de nuestros hijos se apague todos los días a las 20, la instrucción sería.
0 20 * * * /sbin/shutdown
En caso de que busquemos que el apagado sea solo los domingos cambiamos la instrucción a
0 20 * * 0 /sbin/shutdown
Existen algunos atajos que nos ahorran tener que escribir todos los parámetros. Ellos son:
- @hourly: Ejecuta un comando a la hora en punto.
- @daily: Ejecuta el comando al comienzo de cada día.
- @weekly: Ejecuta el comando al comienzo del primer día de la semana.
- @monthly: Ejecuta el comando al comenzar el primer día de cada mes.
- @yearly: Ejecuta el comando en el primer minuto del año.
Algunos ejemplos del uso de este comando son:
@daily /bin/sh /ruta_al_script/nombre_del_script.sh
ejecuta un script en Bash.
@hourly /bin/python3 /ruta_al_script/nombre_del_script.py
ejecuta un script en python cada hora.
En todos los casos los scripts deberán tener permisos de ejecución.
En los ejemplos que vimos se indica no solo el comando sino también la ruta donde se encuentra el ejecutable. Vamos a trabajar con estos directorios:
- /bin: Que contiene todas las aplicaciones necesarias para el funcionamiento del sistema.
- /sbin: Aquí están las aplicaciones que el usuario raíz necesita para manejar el sistema.
- /home: Donde se almacenan las aplicaciones de cada usuario.
- /usr: Aquí se guardan aplicaciones y archivos instalados por los usuarios. Incluyen archivos con los nombres y funciones mencionados en esta lista.
En el próximo artículo veremos cómo mejorar la redacción de crontab y algunas otras herramientas de automatización disponibles para Linux.