Tutoriales

al comando: programar trabajos únicos de Linux sin Cron

este at Los comandos le permiten poner en cola una tarea única para ejecutarla una vez en un momento específico, por lo que no tiene que escribir y recordar eliminar entradas cron para las tareas que solo necesitan ejecutarse una vez.

Es posible que haya utilizado cron para programar tareas y luego se haya dado cuenta de que el trabajo solo debe ejecutarse una vez. Un ejemplo común es dar a los proveedores Acceso SSH temporal Vaya al servidor de producción para solucionar el problema. Puede activar el firewall para su dirección IP y programar la eliminación de la regla después de unas horas.

El problema es que es fácil de olvidar. Ocurren problemas de producción, cambian las prioridades y, antes de que te des cuenta, las reglas de firewall temporales permanecen vigentes mucho después de que deberían haberse eliminado.

esto es at Aparece el comando, que le permite programar una tarea única para que se ejecute en un momento específico en el futuro, lo que lo hace ideal para cambios temporales que deben deshacerse automáticamente más adelante. Aunque la mayoría de los administradores de Linux saben cronmucha gente lo ignora porque cron Obtenga la mayor parte de la atención.

En esta guía te explicaremos qué at Así es como programar tareas únicas y administrar trabajos en cola en Linux.

Boletín semanal de TechMint

Conseguir Aprenda el curso intensivo de 7 días de Linux Únase a más de 34.000 profesionales de Linux que leen gratis todos los jueves.

Publicaciones relacionadas

Revise su correo electrónico para ver el enlace mágico para comenzar.

Algo salió mal. Por favor inténtalo de nuevo.

¿Qué es el comando at en Linux?

este at Los comandos le permiten programar un comando o secuencia de comandos para que se ejecute en un momento específico en el futuro. Usted le dice cuándo ejecutar, proporciona el comando y Linux se encarga del resto.

entre bastidores, at Ponga el trabajo en la cola y llame a un servicio en segundo plano. atd Verifique la cola y ejecute el trabajo cuando llegue la hora programada.

Esto es lo que hace at diferente de cron.

cron Diseñado para tareas repetitivas, como realizar copias de seguridad todas las noches o generar informes todos los lunes. at Diseñado para tareas únicas que solo deben realizarse una vez.

Por ejemplo, podrías usar at llegar:

  • El servicio se reiniciará más tarde esta noche durante un período de mantenimiento.
  • Los archivos temporales se eliminan después de unas horas.
  • Vuelva a habilitar las reglas del firewall después de solucionar el problema.
  • Apague el servidor de prueba al final del día.
  • Envíate un recordatorio o notificación a una hora específica.

Piénselo de esta manera:

  • Si la tarea necesita ejecutarse todos los días, utilice cron.
  • Si la tarea necesita ejecutarse una vez en un momento específico, use at.

Una buena regla general es que si se encuentra configurando un trabajo cron y luego eliminándolo inmediatamente después de ejecutarlo, esa tarea probablemente debería usar at primero.

Instalar e iniciar el servicio atd

existir Muchas distribuciones de Linuxeste at Este paquete no está instalado de forma predeterminada, por lo que primero deberá instalarlo.

sudo apt install at         [On Debian, Ubuntu and Mint]
sudo dnf install at         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo apk add at             [On Alpine Linux]
sudo pacman -S at           [On Arch Linux]
sudo zypper install at      [On OpenSUSE]    
sudo pkg install at         [On FreeBSD]

Esto instalará at comandos y utilidades relacionadas como atq y atrm. También instaló atd Servicio responsable de ejecutar los trabajos programados en el momento correcto.

Después de la instalación, asegúrese de que el servicio esté ejecutándose y configurado para iniciarse automáticamente después del reinicio:

sudo systemctl enable --now atd
sudo systemctl status atd

Producción:

● atd.service - Deferred execution scheduler
     Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; preset: enab>
     Active: active (running) since Thu 2026-06-18 10:54:36 IST; 23s ago
 Invocation: 9656ef36140d404eae309ec9642e402a
       Docs: man:atd(8)
   Main PID: 4804 (atd)
      Tasks: 1 (limit: 8683)
     Memory: 256K (peak: 2M)
        CPU: 8ms
     CGroup: /system.slice/atd.service
             └─4804 /usr/sbin/atd -f

Si ve esto, el servicio está funcionando correctamente y está listo para manejar los trabajos programados.

si atd Detenido o no en ejecución, cualquier trabajo que haya programado at permanecerá en la cola y nunca se ejecutará, esta es una de las razones más comunes por las que los nuevos usuarios piensan at El comando no funciona, por lo que siempre vale la pena verificar primero el estado del servicio al solucionar problemas.

si acabas de llegar atd Corriendo por primera vez, ¿Quién siempre se olvida de limpiar las entradas cron antiguas?

Utilice at para programar tareas únicas

Volvamos al ejemplo de proporcionar a un proveedor acceso SSH temporal a un servidor donde ha activado el firewall para su IP.

En Ubuntu/Debian (ufw):

sudo ufw allow from 203.0.113.50 to any port 22

En RHEL/Rocky Linux (cortafuegos):

sudo firewall-cmd --add-rich-rule="rule family="ipv4" source address="203.0.113.50" port port="22" protocol="tcp" accept"

En lugar de confiar en usted mismo para recordar eliminar la regla más tarde, puede usar el siguiente comando para programar la eliminación inmediatamente. at.

Por ejemplo, para eliminar una regla de firewall a las 10:00 p. m.:

at 22:00

Ingresarás a un mensaje interactivo donde podrás ingresar el comando que deseas ejecutar:

En Ubuntu/Debian:

warning: commands will be executed using /bin/sh
at Thu Jun 18 22:00:00 2026
at> ufw delete allow from 203.0.113.50 to any port 22
at> 
job 3 at Thu Jun 18 22:00:00 2026

En RHEL/Rocky Linux:

warning: commands will be executed using /bin/sh
at Thu Jun 18 22:00:00 2026
at> firewall-cmd --remove-rich-rule="rule family="ipv4" source address="203.0.113.50" port port="22" protocol="tcp" accept"
at> 
job 3 at Thu Jun 18 22:00:00 2026

Después de presionar Ctrl+D, at Guarda el trabajo y muestra el número del trabajo. En este ejemplo, job 3 Estaba previsto que se ejecutara a las 22:00 horas.

Una característica útil es que si hoy ha pasado una hora específica, at Programe trabajos automáticamente para la misma hora mañana.

Programe un trabajo en una línea

Si ya conoce el comando que desea ejecutar, puede omitir el mensaje interactivo y enviar el comando directamente a at.

Ubuntu/Debian:

echo "ufw delete allow from 203.0.113.50 to any port 22" | at 22:00

RHEL/LokiLinux:

echo "firewall-cmd --remove-rich-rule="rule family=\"ipv4\" source address=\"203.0.113.50\" port port=\"22\" protocol=\"tcp\" accept"" | at 22:00

este firewalld El ejemplo contiene comillas dobles escapadas (\"). Estas barras invertidas evitan que el shell termine prematuramente la cadena entrecomillada y garantizan que todo el comando se pase correctamente.

Esto es lo que sucede en la versión de una sola línea:

  • echo "..." Imprime el comando como texto sin formato.
  • tubería (|) Envía este texto a at.
  • at 22:00 Lea el comando y prográmelo para que se ejecute a las 10:00 p.m.

Este método es particularmente útil en scripts, tareas automatizadas o cualquier situación en la que desee programar rápidamente un trabajo sin ingresar un mensaje interactivo.

Programar tareas de Linux utilizando expresiones de tiempo naturales

Una de las funciones más útiles. at Las órdenes son expresiones temporales de su comprensión de la bondad humana. En lugar de calcular la hora exacta, simplemente puede indicarle a Linux cuándo desea que se ejecute el trabajo en relación con la hora actual.

Por ejemplo, si un proveedor solo requiere acceso SSH dentro de las próximas dos horas, puede programar la regla de firewall para que se elimine automáticamente después de ese período de tiempo.

echo "ufw delete allow from 203.0.113.50 to any port 22" | at now + 2 hours

producción:

job 4 at Thu Jun 18 14:30:00 2026

este at La directiva entiende varias expresiones de tiempo natural:

at now + 30 minutes 
at now + 2 hours 
at now + 1 day 
at noon at midnight 
at noon tomorrow 
at 5pm tomorrow 
at 08:30 AM

Si la eliminación de la regla del firewall en cola le evita dejar un puerto abierto durante la noche, .

Utilice atq para ver trabajos programados

Después de programar una o más tareas ates mejor verificar que efectivamente estén en la cola y esperando ser ejecutados.

este atq El comando muestra todos los trabajos pendientes para el usuario actual.

atq

producción:

3       Thu Jun 18 22:00:00 2026 a root
4       Thu Jun 18 14:30:00 2026 a root

Cada fila representa un trabajo programado.

3 Thu Jun 18 22:00:00 2026 a root

Analicemos la primera entrada:

  • 3 es la identificación del trabajo.
  • Thu Jun 18 22:00:00 2026 es el tiempo de ejecución programado.
  • a es el nombre de la cola (la cola predeterminada utilizada por at).
  • root Es el usuario quien programa el trabajo.

este atq Este comando es útil siempre que desee confirmar que una tarea se ha programado correctamente.

Por ejemplo, después de configurar un trabajo para eliminar reglas de firewall temporales, puede ejecutar:

atq

Y verifique que los trabajos de limpieza estén en cola antes de permitir que el proveedor acceda a su servidor.

Si atq no responde, actualmente no hay trabajos pendientes para su cuenta de usuario.

atq
si quieres adaptarte at y el resto del conjunto de herramientas principales de la línea de comandos, Más de 100 comandos básicos de Linux El curso de Pro TecMint lo cubre de principio a fin.

Utilice atrm para eliminar un trabajo

Si un trabajo está en cola y cambia de opinión, tal vez el proveedor terminó el trabajo antes y usted desea apagar el firewall inmediatamente en lugar de esperar. atrm Cancélelo antes de ejecutarlo.

atrm job-number

reemplazar job-number con el numero que ves en atq Salida, esta es la convención de corchetes angulares que usaremos en todas partes de esta guía para los valores que debe completar usted mismo.

atrm 4

Si es válido no hay salida. correr atq Inmediatamente después, el número de trabajo debería desaparecer de la lista. Tenga en cuenta que si cancela el trabajo, aún deberá cerrar la regla manualmente. atrm Sólo se elimina la tarea programada, no los cambios del firewall.

si atq Acabo de mostrarte un trabajo que olvidaste arreglar. else administra este servidor.

en conclusión

este at Command es una de esas herramientas de Linux que fácilmente se pasa por alto hasta que la necesitas. Siempre que tenga una tarea que deba ejecutarse una vez en un momento específico, suele ser una mejor opción que configurar un trabajo cron temporal.

¿Has estado usando? cron ¿Para un trabajo que sólo necesita ejecutarse una vez? Por favor comente su horario y le diré si encajaría mejor.

Si este artículo fue útil, Con alguien de tu equipo.

Boletín semanal de TechMint

Conseguir Aprenda el curso intensivo de 7 días de Linux Únase a más de 34.000 profesionales de Linux que leen gratis todos los jueves.

Revise su correo electrónico para ver el enlace mágico para comenzar.

Algo salió mal. Por favor inténtalo de nuevo.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba