Comando at: Programación de tareas únicas en Linux

Tal y como indica el título de la entrada hablamos del comando at, que nos permite programar tareas únicas en nuestro sistemas GNU/Linux No hace falta decir que para programar tareas repetitivas debemos utilizar cron y crontab, de los que ya hemos hablado en la web.

¿En que consiste el comando at en Linux?

Mientras trabajamos en distribuciones GNU/Linux, generalmente utilizamos crontab para programar trabajos en general. Hay otra utilidad muy útil e interesante para programar tareas únicas. Con at podemos leer comandos de entrada estándar o scripts que deseamos que se ejecuten más tarde, una única vez. Si queremos que un comando o un script se ejecute más de una vez, debemos programarlo mediante crontab, tal y como hemos indicado en el párrafo anterior.

El comando at, nos puede ser útil para apagar el sistema a una hora especifica, realizar una copia de seguridad única, enviar un correo electrónico como recordatorio a la hora especificada, entre otras muchas cosas.

No suelo utilizar este comando, pero quizás a vosotros os puede ser de utilidad en algún momento. El programa at forma parte del temario del temario de la certificación de LPIC 102, en su versión 500

Los comandos principales son:

  • at: ejecuta comandos a la hora especificada.
  • atq: enumera los trabajos pendientes de los usuarios.
  • atrm: borra trabajos por su número 1.de trabajo.

1. Programar un trabajo utilizando el comando at

El siguiente ejemplo programará el comando «sh copia-seguridad.sh» para que se ejecute una vez a las 10:00 PM.

  1. davidochobits@servubuntu01:~$ at 10:00 PM
  2. warning: commands will be executed using /bin/sh
  3. at> sh copia-seguridad.sh
  4. at> 
  5. job 1 at Mon Jul  1 22:00:00 2019

Como se observa utilizamos ^D para salir de la consola.

También podemos programar el mismo trabajo de esta forma:

  1. echo "sh copia-seguridad.sh" | at 10:00 PM

2. Listar los trabajos programados usando atq

Si utilizamos el usuario root, podemos listar los trabajos programados de todos los usuarios, mediante el comando atq En cambio sí utilizamos la misma herramienta con un usuario que no sea root, únicamente listara los trabajos del propio usuario.

Tal y como se muestra en el ejemplo:

  1. root@servubuntu01:~# atq
  2. 1       Mon Jul  1 22:00:00 2019 a davidochobits
  3. 2       Tue Jul  2 07:00:00 2019 a minecraft

En la información anterior, tenemos el número de trabajo, la fecha de programación y el usuario que lo ha programado.

3. Eliminar un trabajo programado usando atrm

Mediante el comando atrm podemos eliminar un trabajo en concreto, tal y como se observa en el ejemplo:

  1. root@servubuntu01:~# atrm 2
  2. root@servubuntu01:~# atq
  3. 1       Mon Jul  1 22:00:00 2019 a davidochobits

4. Comprobar el contenido de programado en el trabajo

El comando atq solo nos muestra la lista de trabajos, pero si deseamos verificar qué secuencias de comandos están programados para esa tarea, lo podemos conseguir de la siguiente manera:

  1. at -c 1

Y nos mostrará información del trabajo en concreto.

Ejemplos de uso de at

1. Programar una tarea a las cinco de la tarde

  1. at 05:00 PM

2. Programar una tarea a las tres de la mañana

  1. at 03:00 AM

3. Programar una tarea a las siete de la mañana del próximo domingo

  1. at 07:00 AM Sun

4. Programar la tarea a las 11:00 AM del próximo 14 de abril

  1. at 11:00 AM April 14

5. Programar una tarea a las 10:00 AM del próximo 22 de junio de 2021

  1. #Lo podemos hacer de dos formas:
  2. at 10:00 AM 6/22/2021
  3. at 10:00 AM 6.22.2021

6. Programar una tarea a las 11 de la mañana el mismo día del próximo mes

  1. at 11:00 AM next month

7. Programar una tarea para mañana a las 11 AM

  1. at 11:00 AM tomorrow

8. Programar una tarea de aquí a una hora

  1. at now + 1 hour

9. Programar una tarea de aquí a 30 minutos

  1. at now + 30 minutes

10. Programar una tarea de aquí a una y dos semanas

  1. at now + 1 week
  2. at now + 2 weeks

11. Programar una tarea de aquí a uno y dos años

  1. at now + 1 year
  2. at now + 2 years

12. Programar una tarea a media noche

  1. at midnight

Y esto es todo. Espero que el artículo os sea de utilidad en algún momento. Nos vamos leyendo.

Fuentes consultadas

Tecadmin.net – One Time Task Scheduling using at Command in Linux