ates una utilidad de línea de comandos que le permite programar comandos para que se ejecuten en un momento determinado. Los trabajos creados con atse ejecutan solo una vez.

En este artículo, explicaremos cómo usar aty sus utilidades complementarias batchatqatrmpara ver, eliminar y crear trabajos para ejecutarlos más adelante.

Instalandoat

Dependiendo de la distribución, atpuede o no estar presente en su sistema Linux.

Si atno está instalado, puede instalarlo fácilmente usando el administrador de paquetes de su distribución.

  • Instalar aten Ubuntu y Debian

    sudo apt update sudo apt install at
  • Instalar aten CentOS y Fedora

    sudo yum install at

Una vez que el programa esté instalado, asegúrese atdde que el demonio de programación se esté ejecutando y configurado para iniciarse en el arranque:

sudo systemctl enable --now atd

Cómo usar el atcomando

La sintaxis simplificada del atcomando es la siguiente:

at [OPTION...] runtime

El atcomando toma la fecha y la hora ( runtime) cuando desea ejecutar el trabajo como un parámetro de línea de comando y el comando que se ejecutará desde la entrada estándar.

Vamos a crear un trabajo que se ejecutará a las 9:00 am:

at 09:00

Una vez que presione Enter, se le presentará el símbolo del atsistema que generalmente comienza con at>También verá una advertencia que le indica el shell en el que se ejecutará el comando:

warning: commands will be executed using /bin/sh
at>

Introduzca uno o más comandos que desee ejecutar:

tar -xf /home/heymarkething/file.tar.gz

Cuando haya terminado de ingresar los comandos, presione Ctrl-Dpara salir del indicador y guardar el trabajo:

at> <EOT>
job 4 at Tue May  5 09:00:00 2020

El comando mostrará el número de trabajo y la hora y fecha de ejecución.

También hay otras formas de pasar el comando que desea ejecutar, además de ingresar el comando en el atindicador. Una forma es usar echo y canalizar el comando a at:

echo "command_to_be_run" | at 09:00
at 09:00 <<ENDcommand_to_be_runEND

Para leer los comandos de un archivo en lugar de la entrada estándar, invoque el comando con la -fopción que sigue a la ruta del archivo. Por ejemplo, para crear un trabajo que ejecutará el script /home/heymarkething/script.sh:

at 09:00 -f /home/heymarkething/script.sh

De manera predeterminada, si el comando genera una salida, atenviará un correo electrónico que incluye la salida al usuario una vez que se complete el trabajo. Invoque atcon la -Mopción de suprimir la notificación por correo electrónico:

at 09:00 -M

Use -mpara enviar un correo electrónico incluso si no hay salida:

at 09:00 -m

batchMando

batcho su alias at -bprograma trabajos y los ejecuta en una cola por lotes cuando el nivel de carga del sistema lo permite. De forma predeterminada, los trabajos se ejecutan cuando el promedio de carga del sistema es inferior a 1,5. El valor de la carga se puede especificar al invocar el atddaemon. Si el promedio de carga del sistema es superior al especificado, los trabajos esperarán en la cola.

Para crear un trabajo con batch, pase los comandos que desea ejecutar:

echo "command_to_be_run" | batch

Especificación del tiempo de ejecución

La atutilidad acepta una amplia gama de especificaciones de tiempo. Puede especificar la hora, la fecha y el incremento desde la hora actual:

  • Hora : para especificar una hora, use el formulario HH:MMHHMMPara indicar un formato de hora de 12 horas, utilice ampmdespués de la hora. También puede usar cadenas como nowmidnightnoonteatime(16:00). Si se pasa el tiempo especificado, el trabajo se ejecutará al día siguiente.

  • Fecha : el comando le permite programar la ejecución del trabajo en una fecha determinada. La fecha se puede especificar usando el nombre del mes seguido del día y un año opcional. Puede utilizar cadenas, como todaytomorrowo el día de la semana. La fecha también se puede indicar utilizando los formatos MMDD[CC]YYMM/DD/[CC]YY.DD.MM.[CC]YY[CC]YY-MM-DD

  • Incremento : attambién acepta incrementos en el now + count time-unitformato, donde countes un número y time-unitpuede ser una de las siguientes cadenas: minuteshoursdaysweeks.

Se pueden combinar la hora, la fecha y el incremento, aquí hay algunos ejemplos:

  • Programe un trabajo para el próximo domingo a una hora diez minutos más tarde que la hora actual:

    at sunday +10 minutes
  • Programe un trabajo para que se ejecute a la 1:00 p. m. dentro de dos días:

    at 1pm + 2 days
  • Programe un trabajo para que se ejecute a las 12:30 del 21 de octubre de 2020:

    at 12:30 102120
  • Programe un trabajo para que se ejecute dentro de una hora a partir de ahora:

    at now +1 hours

También puede especificar una hora y fecha en el [[CC]YY]MMDDhhmm[.ss]uso de la -topción. Aquí hay un ejemplo:

at -t 202005111321.32

Especificación de cola

De forma predeterminada, los trabajos creados con atse programan en la cola nombrada ay los trabajos creados con batchse programan en la bcola.

Las consultas pueden tener un nombre desde ahasta zAhasta ZLas colas con letras más bajas se ejecutan con menos amabilidad, lo que significa que tienen prioridad sobre las que tienen letras más altas.

Puede especificar la cola con la -qopción. Por ejemplo, para establecer un trabajo en la Lcola, ejecutaría:

at monday +2 hours -q L

Listado de trabajos pendientes

Para enumerar los trabajos pendientes del usuario, ejecute el comando atqo :at -l

atq

La salida enumerará todos los trabajos, uno por línea. Cada línea incluye el número de trabajo, la fecha, la hora, la letra de la cola y el nombre de usuario.

9	  Tue May  5 12:22:00 2020 a heymarkething
12	Wed Oct 21 12:30:00 2020 a heymarkething
15	Tue May  5 09:00:00 2020 a heymarkething
6	  Tue May  5 09:00:00 2020 a heymarkething
13	Mon May  4 23:08:00 2020 a heymarkething
11	Wed Jul  1 10:00:00 2020 a heymarkething
4	  Tue May  5 09:00:00 2020 a heymarkething

Cuando atqse invoca como usuario administrativo, listará los trabajos pendientes de todos los usuarios.

Eliminación de trabajos pendientes

Para eliminar un trabajo pendiente, invoque el comando atrmat -rseguido del número de trabajo. Por ejemplo, para eliminar el trabajo con el número nueve, ejecutaría:

atrm 9

Restricción de usuarios

Los archivos /etc/at.deny/etc/at.allowle permiten controlar con qué usuarios pueden crear trabajos atbatchcomandos. Los archivos constan de una lista de nombres de usuario, un nombre de usuario por línea.

De manera predeterminada, solo /etc/at.deny existe el archivo y está vacío, lo que significa que todos los usuarios pueden usar el atcomando. Si desea denegar el permiso a un usuario específico, agregue el nombre de usuario a este archivo.

Si el /etc/at.allowarchivo existe, solo los usuarios que aparecen en este archivo pueden usar el atcomando.

Si ninguno de los archivos existe, solo los usuarios con privilegios administrativos pueden usar el atcomando.

Conclusión

La atutilidad lee los comandos de la entrada estándar y los ejecuta en un momento posterior. A diferencia de crontab , los trabajos creados con atse ejecutan solo una vez.

Para obtener más información sobre todas las opciones disponibles del attipo de comando man aten su terminal.

Si tiene alguna pregunta, no dude en dejar un comentario.