Programando tareas en GNU/Linux: cron + crontab

La gente que suele emplear habitualmente Windows conoce a la perfección las "Tareas programadas" y aunque personalmente no conozco a mucha gente que las emplee, sí que cuando menos las conocen. Pues bien, en GNU/Linux existe un planificador de tareas, que también permite ejecutar de forma periódica cosas. Según mi experiencia, incluso más potente que el de Windows, pero como siempre, para gustos...

¿Qué es cron?

cron es el planificador de procesos incluido en prácticamente todos los Unix. Es un pequeño daemon que se encarga de ejecutar los procesos descritos en el fichero crontab cuando corresponda. Por defecto, cron se ejecuta en segundo plano una vez cada minuto y revisa la tabla de tareas que debe de ejecutar (si las hay). Estas tareas se almacenan en /etc/crontab o en /var/spool/cron.
cron permite ejecutar programas como "daemons" sin serlo realmente, ya que es él el que se encarga de realizar la ejecución periódica.

¿Qué es crontab?

crontab es un pequeño fichero de texto, situado en /etc/crontab y que únicamente contiene una pequeña configuración para cada uno de los procesos que se deben de ejecutar. Dicho fichero está distribuido por líneas y cada línea tiene la fecha en la que se debe de repetir (frecuencia de ejecución), el usuario con el que hacerlo (permisos) y el comando a ejecutar.
A mayores del fichero crontab de /etc, que es el general del sistema, cualquier usuario puede tener también su propio fichero crontab. En él puede especificar los comandos que desea y la periodicidad de los mismos. La única diferencia es que no hay campo usuario, ya se se asume que es el propio usuario dueño de dicho fichero. Cualquier usuario puede generar y manejar su propio fichero con el comando crontab.

Tareas en crontab

Una de las partes más esenciales de cron, como ya dijimos es crontab y dentro de éste fichero, lo más lógico es saber cómo crear una nueva línea. Recordemos que cada línea es una tarea o trabajo, así que una nueva línea es un nuevo trabajo que se ejecutará.
Hace ya tiempo escribí una pequeña entrada sobre cron y qué significa cada posición en el fichero. Si te interesa leerla, lo puedes hacer aquí. Lo más importante de aquella entrada era la siguiente imagen,
donde se explica a la perfección cómo crear una línea de ejecución. Algunos ejemplos prácticos:
  • Actualizar sistema a las 3:15 todos los días
    15 3 * * * root apt-get update
    
  • Actualizar sistema todos los domingos a las 10:00
    00 10 * * 0 root apt-get -y update
    
  • Actualizar sistema el día 15 de cada mes a las 15:15
    15 15 15 * * root apt-get update
    
  • Actualizar sistema todos los días de la semana a las 15:15
    15 15 * * 1,2,3,4,5 root apt-get update
    
  • Actualizar sistema el día 1, 15 y 30 de cada mes
    00 00 1,15,30 * * root apt-get update
    
A mayores de poder definir las cadenas como número, cron también contiene cierto literales muy importantes para determinados eventos sumamente reconocidos o empleados. Estos son:
  • @reboot, ejecuta la tarea cuando el sistema se inicia
  • @yearly, ejecuta la tarea sólo una vez al año: 0 0 1 1 *
  • @annually, lo mismo que @yearly
  • @monthly, ejecuta la tarea el primer día del mes: 0 0 1 * *
  • @weekly, ejecuta la tarea el primer minuto de la primera hora de la semana: 0 0 * * 0
  • @daily, diario a las 12:00A.M. 0 0 * * *
  • @midnight, lo mismo que @daily
  • @hourly, ejecuta la tarea el primer minuto de cada hora: 0 * * * *
Y su uso, muy simple,
@reboot  logcheck  /usr/sbin/logcheck -R

La entrada Programando tareas en GNU/Linux: cron + crontab la puede leer en Puppet Linux.


No hay comentarios :

Publicar un comentario

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios