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.

![[xml]](/images/xml.gif)
