GNU/Linux >> Tutoriales Linux >  >> Linux

Uso de at para trabajos cron de un solo uso en Linux

Cron es uno de los UNIXismos más reconocibles del mundo de la informática. Incluso las personas de TI que no administran servidores Linux han oído hablar de esa bestia misteriosa, el "trabajo cron". Y los administradores de Linux saben que los trabajos cron son infinitamente útiles. De hecho, es discutible que el cron El sistema fue uno de los primeros progenitores de la moda de la automatización. Si había algo que sabías que un humano podría olvidarse de hacer, cron fue la respuesta.

Sin embargo, donde cron Excels es repetición y, a veces, no es necesario que un trabajo se ejecute cada hora, todos los días o todas las semanas. Solo necesita que un trabajo se ejecute según lo programado, y configurar una alarma para recordarlo no parece ser la forma de UNIX. Lo que necesitas es el at comando, una pequeña utilidad que puede usar para crear una cola de trabajos programados para ejecutarse en un momento específico en el futuro.

Configuración

Antes de usar at comando, debe tener un script de shell que desee ejecutar en algún momento. Como de costumbre, su script debe tener una línea de "cookie mágica" o "shebang" en la parte superior del archivo para establecer qué shell usar para su ejecución.
Para este ejemplo, cree un script simple que cree un archivo en /tmp :

#!/bin/sh

DATE=`date --utc +%s`
echo "hello world $DATE" | tee /tmp/at.log
exit 0

Haga que el script sea ejecutable y luego pruébelo:

$ chmod +x test.sh
$ ./test.sh

Ver el contenido de /tmp/at.log archivar el script creado:

$ cat /tmp/at.log

hello world 1588482185

Programar un trabajo

Puede programar un trabajo utilizando una marca de tiempo o con lenguaje natural. Si usa lenguaje natural o formatos de hora simples, entonces no se requiere ninguna opción antes de especificar la hora.
Por ejemplo, para programar test.sh para ejecutarse inmediatamente, puede usar la palabra clave now :

$ at now -f test.sh

warning: commands will be executed using /bin/sh
job 1 at Mon Feb 24 01:23:00 2020
$ cat /tmp/at.log

hello world 1588482620

Puede establecer una compensación desde ahora usando minutes , hours , days , weeks , o years .

$ at now + 1 day -f test.sh

warning: commands will be executed using /bin/sh
job 2 at Tue Feb 25 01:27:00 2020

Los years la palabra clave no está documentada y seconds no es apoyado. También puede especificar horas comunes, como midnight , noon y teatime (son las 16:00).

Los tiempos simples también funcionan:

$ at 21:12 -f test.sh

warning: commands will be executed using /bin/sh
job 3 at Mon Feb 24 21:12:00 2020

Para programar una fecha del calendario a una hora específica, debe usar -t opción y cualquier formato de hora compatible con POSIX. Por ejemplo, usando el formato AAAAMMDDHHMM:

$ at -t 202003141509 -f test.sh

warning: commands will be executed using /bin/sh
job 4 at Sat Mar 14 15:09:00 2020

[ ¿Busca una automatización de sistemas más avanzada? Comience con The Automated Enterprise, un libro gratuito de Red Hat. ]

Tubos

Puede enviar comandos a at a través de una tubería UNIX:

$ echo "hello world" > /tmp/at.log | at now

warning: commands will be executed using /bin/sh
job 5 at Mon Feb 24 01:28:00 2020

$ cat /tmp/at.log

hello world

Trabajos por lotes

El batch comando (o at -b ) ejecuta un comando tan pronto como lo permitan los recursos del sistema. Si la carga de su sistema es alta, puede usar batch para poner en cola su trabajo para que se ejecute cuando haya ciclos de CPU de sobra.

$ echo "Cycles to spare" > /tmp/at.log | batch

warning: commands will be executed using /bin/sh
job 5 at Mon Feb 24 01:31:00 2020

Viendo tu cola

El atq comando muestra su at cola. Esto le da el ID del trabajo, la hora en que está programado que se ejecute cada trabajo, la cola en la que se agrupa cada trabajo (a para el at cola o b para el batch queue) y el nombre de usuario del propietario de la cola. El propietario de la cola suele ser usted mismo, a menos que esté ejecutando atq como raíz, en cuyo caso verá todos los at de los usuarios colas.

$ atq 

2   Tue Feb 25 01:27:00 2020  a  seth
3   Mon Feb 24 21:12:00 2020  a  seth
4   Sat Mar 14 15:09:00 2020  a  seth
5   Mon Feb 24 01:31:00 2020  b  seth

Puede crear y nombrar sus propias colas usando cualquier carácter único c-z o A-Z . Ambos a y b son designaciones reservadas para at y batch , y cualquier cola con una letra mayúscula se trata como un batch trabajo. Colas con nombres que siguen alfabéticamente a a y b se ejecutan con una amabilidad cada vez mayor.

Vista previa de su trabajo

Cuando envía un comando o script a at , su directorio de trabajo actual, entorno (excluyendo BASH_VERSINFO , DISPLAY , EUID , GROUPS , SHELLOPTS , TERM , UID y _ ) y la umask se conservan. Si su comando espera una configuración de entorno específica, debe configurarla mientras pasa el comando a at o anularlos en su secuencia de comandos.

Para ver cómo se ejecutará su comando, use -c opción junto con el número de trabajo:

$ at -c 4

#!/bin/sh
# atrun uid=1006 gid=1006
# mail seth 0

umask 22
CPLUS_INCLUDE_PATH=/usr/lib64/qt/include; export CPLUS_INCLUDE_PATH
MANPATH=/usr/local/man:/usr/man:/usr/lib64/adoptopenjdk12.0.2/man; export MANPATH
KDE_MULTIHEAD=false; export KDE_MULTIHEAD
[...]

Eliminando trabajos

Puede eliminar trabajos pendientes de su at hacer cola usando el atrm comando y el ID del trabajo. Si no conoce la identificación del trabajo, use atq para ver tu cola primero.

$ atq 

6   Fri Jan 01 00:00:00 2038  a  seth
$ atrm 6

$ atq

Programar con at

El at el comando es un poco como un cron menor sistema. Es útil para la ejecución de comandos de una sola vez y es fácil de usar. Si has estado usando cron o sleep para compensar el tiempo de ejecución de un comando, eche un vistazo a at y batch .

[ ¿Necesita aprender más sobre la administración del sistema Linux? Considere tomar un curso de administración de sistemas de Red Hat. ]


Linux
  1. Uso de AppImage para la administración de paquetes de Linux

  2. Opciones de comando de trabajos en Linux

  3. Uso de variables en SQLCMD para Linux

  4. ¿Usando trabajos CRON para visitar la URL?

  5. Eliminar archivos de registro usando el trabajo cron

Configure Cron Jobs para Linux y las 10 mejores herramientas en línea para Cron Jobs

Programar trabajos en Linux con el comando 'at'

Cómo usar el comando Jobs en Linux

¿Qué es un trabajo cron en Linux?

Cómo ejecutar y enumerar trabajos cron para un sistema Linux a través de PHP

Linux Crontab:15 impresionantes ejemplos de trabajo de Cron