El comando <at> de Solaris nos permite planificar la ejecución de un comando en un intervalo de tiempo. A diferencia de cómo gestionar el cron en Solaris, donde se pueden definir repeticiones <at> nos permite ejecutar un comando "luego".
El formato de <at> es el siguiente:
/usr/bin/at [-c | -k | -s] [-m] [-f file] [-p project] [-q queuename] timespecdonde
- -c indica que queremos utilizar <C Shell>
- -k indica que queremos utilizar <Korn Shell>
- -s indica que queremos utilizar <Bash Shell>
- -f indica que queremos utilizar <file> como comando en vez de la entrada estandar
- -p indica que queremos utilizar <project> como proyecto para la ejecución
- -q indica el nombre de la <queue> que queremos utilizar
- timespec indica cuándo queremos ejecutarlo
<at> dispone de diferentes <queue> de ejecución que nos van a permitir gestionar nuestras peticiones. Estas <queue> pueden ser letras en minúsculas de la <a ... z> donde debemos tener en cuenta que la <queue>b> está reservada para <batch> y la <c> para <cron>
La cola de ejecución <batch>
Este tipo especial de <queue> nos permite ejecutar los comandos en modo "secuencial" cuando el equipo está <idle> y, por lo tanto, no nos interfiere en la carga del sistema.
Su formato no requiere una definición de tiempo -ya que lo ejecutará cuando pueda-, por ejemplo
havoc@h100:/# echo "ls >/tmp/ls.batch"| at -q bVariables definidas para definir la hora de ejecución <timespec>
commands will be executed using /bin/bash
job 1308472386.b at dom jun 19 10:33:06 2011
Existen algunas definiciones ya establecidas para <timespec<, por ejemplo, <now>, <midnight>, etc.
A estas definiciones podemos añadirles (utilizando +) un intervalo, por ejemplo, <minute, hour, day, week> con lo que tendremos una expresión como esta:
havoc@h100:/# echo "ls" | at now + 1 minuteVer el estado de las <queue>
Para ver el estado de las colas de ejecución, comandos pendientes y la fecha/hora planificada, utilizaremos la opción <-l>, por ejemplo
havoc@h100:/# at -lBorrar un comando de la <queue>
user = root 1308473222.a dom jun 19 10:47:02 2011
Podemos borrar un comando utilizando la opción <-r {id}>, por ejemplo,
havoc@h100:/# echo "ls > /tmp/ls.at" | at now + 5 minutesPermitir o denegar la ejecución de comandos
commands will be executed using /bin/bash
job 1308473822.a at dom jun 19 10:57:02 2011
havoc@h100:/# at -l
user = root 1308473822.a dom jun 19 10:57:02 2011
havoc@h100:/# at -r 1308473822.a
havoc@h100:/# at -l
Al igual que sucede con <cron>, podemos establecer qué usuarios pueden ejecutar comandos mediante <at o cron> editando el archivo </etc/cron.d/at.allow> y denegar editando el archivo </etc/cron.d/at.deny>
Además, debemos tener en cuenta que si el usuario/role no tiene establecida una contraseña, no podrá ejecutar comandos.
Algun ejemplo más ...
Por ejemplo, si queremos que se lance el sistema de actualización de paquetes hoy por la noche, podemos utilizar el siguiente formato:
havoc@h100:/# echo "pkg refresh --full" | at -q z midnightConclusiones
commands will be executed using /bin/bash
job 1306792800.z at mar may 31 00:00:00 2011
Este comando -a veces desconocido- nos puede solucionar algún que otro problema, sobre todo cuando queremos dejar "algo para luego", o si queremos aprovecharnos de la ejecución en formato "batch".
Referencias
No hay comentarios:
Publicar un comentario