Programación de tareas en Linux

Son muchas las tareas que realizamos con nuestros ordenadores hoy en día. Y son muchos los momentos en que necesitamos realizar o ejecutar estas tareas y no estamos delante de nuestros equipos o de algún dispositivo desde el que podamos conectarnos a ellos.

Por ejemplo, en un servidor al que se conectan cierto numero de usuarios, podemos programar el servidor para hacer una copia de seguridad del directorio /home a cierta hora periódicamente. Necesitaríamos entrar todas esas veces al servidor para hacer dichas backup y liarnos a hacerlas nosotros.

Para estas dificultades, existen varias aplicaciones o programas con los que programaremos las tareas que necesitemos realizar en el momento exacto que queramos que se ejecuten y los dias o la fecha que nosotros elijamos.

Para hacer esto, os hablaré de dos maneras de realizar una programación de tareas. Una mediante el terminal, utilizando los comandos crontab y at, y la otra utilizando una aplicación del entorno gráfico Linux llamada Tareas programadas.

Primero explicaremos la opción por línea de comandos.

Como he dicho antes utilizaremos los comandos crontab y at. Crontab lo utilizaremos para programar tareas que se realizarán de forma periódica y at lo usaremos para realizarla en un momento determinado pero sólo esa vez.

Crontab

Con esta herramienta cada usuario podrá definir sus propias tareas programadas.La sintaxis más básica es:

  • crontab -l Mostrar las tareas programadas por el usuario.
  • crontab -e Editar el fichero crontab. Con esto editaremos el fichero de configuración de crontab de cada usuario para poder modificar las tareas programadas.
  • crontab -r Eliminar el fichero crontab corriente.
  • crontab -u <usuario> Aplicar una de las opciones anteriores para un usuario determinado. Sólo root puede hacerlo.

Todas las tareas programadas estan contenidas en los ficheros crontab, lo cuales podemos editar para cada usuario con la opción anterior o para todo el sistema editando el fichero /etc/crontab (sólo como root.)

Este fichero tiene una estructura específica que deberemos seguir. Sólo tendremos que escribir una línea más para cada tarea que deseemos programar. Cada línea contendrá 6 campos:

m: minutos

h: hora

dom: día

mon: mes

dow: año

command: comando que queremos ejecutar

A la hora de expresar los minutos, horas, días, meses y año, podemos utilizar valores enteros; listas: 3,23,43; rangos de tiempo: 1-5; pasos: 2-6/2 (= 2,4,6); y * (cualquier valor o todos los días, meses, etc).

Una vez programada nuestras tareas debemos reiniciar cron para aplicar los cambios:

/etc/init.d/cron restart

Además, podemos hacernos nuestros scripts y hacer que crontab los ejecute para tener tareas programadas más complejas.

 At

Con este otro comando ejecutaremos tareas a una hora concreta sólo una vez, utilizando at<hora>[fecha]. La fecha es opcional y su formato es mm/dd/año.

Ejemplo:

$ at 3:15pm ó $ at 15:15

Una vez ejecutemos esta órden nos aparece el prompt de at para que introduzcamos los comandos que deben ejcutarse a esa hora:

at> gmessage “Terminó tu turno” (terminaremos con control+d)

algunas de las opciones para at:

-l: nos muestra la lista de tareas que tenemos programadas

-d<numero de tarera>: para eliminar la tarea. El numero de la tarea lo podemos consultar con la opcion anteriores

 Y por último la herramienta gráfica de Linux Tareas programadas.

Ésta aplicación no suele venir instalada por defecto y el comando para instalarla es:

sudo apt-get install gnome-schedule

Una vez instalada podemos ejecutarla de dos maneras.

$ gnome-schedule

O desde la interfaz:

Aplicaciones>Herramientas del sistema>Tareas programadas.

Al abrirse el programa nos encontramos la siguiente imagen:

Dónde pincharemos en Nuevo para programar nuestra nueva tareas y utilizaremos Cambiar de usuario, para elegir el usuario cuyas tareas queremos modificar.

Al pinchar en Nuevo podremos elegir entre las 3 opciones que vemos en la siguiente imagen.

Si elegimos la primera opción se nos abrirá una nueva ventana, dónde introduciremos en cada campo los detalles de la tarea a ejecutar periódicamente (al igual que Crontab).

Si elegimos la segunda opción tendremos en este caso que detallar la tarea que queremos ejecutar sólo en un determinado momento (igual que At).

Y la tercera opción te da la posibilidad de elegir plantillas creadas con anterioridad.

Opción 1

Opción 2

Opcion3