27 de Mayo, 2005

Programando tareas no repetitivas

Hace poco preparé una réplica de OpenBSD 3.7 en FTP de blackshell (elxwifi). No es que la instalación base sea enorme, pero sí tarda un poco en bajar y no quería que interfiriera en mi trabajo consumiendo ancho de banda. Por eso decidí descargarlo en horas intempestivas, que para eso el servidor trabaja 24h.

Pues nada, me puse el despertador a las 03:30AM y lancé un wget a descargar :D.

En realidad es mucho más fácil gracias a at(1).

$ at 03:30AM
cd ~/tmp
wget -q ftp://ftp.rediris.es/pub/OpenBSD/3.7/i386/
echo "OpenBSD 3.7 ya está en casa!" | mail -s "Descargas" reidrac
^D
commands will be executed using /bin/sh
job 1117243800.c at Sat May 28 03:30:00 2005

Con eso programamos una tarea a las 3 y media de mañana, indicando a continuación qué órdenes ejecutar (finalizando con un CTRL + D).

También podríamos indicar un fichero con los comandos empleando la opción -f fichero, para quitarnos la tensión de escribir los comandos a pelo.

Con at podemos manejar nuestra cola de tareas, por ejemplo, listando las que tenemos pendientes:

$ at -l
1117243800.c    Sat May 28 03:30:00 2005

Con el identificador que se da al comienzo de cada línea podemos eliminar la tarea programada:

$ at -r 1117243800.c
1117243800.c removed

Muy fácil, ¿no?

Cuando los ficheros estaban listos (recibí un correo que pude leer a la mañana siguiente), los copié con permisos adecuados al directorio correspondiente para que fueran accesibles desde el servidor FTP.

Aunque era tentador programar la tarea con root (haciendo su -, sino aún seremos el usuario sin privilegios para at, ojo), no lo hice. Digamos que son buenas prácticas, porque lo más probable es que no pasara nada. Pero bueno, wget a veces puede ser una herramienta peligrosa y si nunca hacemos las cosas mal, seguro que cuando haya peligro real no la fastidiaremos.

Para tareas repetitivas emplearemos cron(8), aunque eso ya es otra historia.

Anotación por Juan J. Martínez.

Hay 2 comentarios

Gravatar

... sin descubrir (por mí).

Hasta hoy utilizaba cron para que el equipo hiciera algo a una hora determinada, aunque sólo fuera una vez.

Gracias, Juanjo.

Santi

por Santi, en 2005-05-28 16:11:47

Gravatar

Muy util, me lo apunto.

por Saiyine, en 2005-06-02 22:03:09

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.