Puede ejecutar trabajos por lotes en UNIX/Linux usando cualquiera de los tres comandos:at, batch o cron.
En este artículo, revisemos cómo programar un trabajo, ver un trabajo y eliminar un trabajo usando at command .
Puede programar un trabajo de dos maneras diferentes:
- Programe el trabajo para que se ejecute en un momento específico. Por ejemplo, 3 de julio, 10 a. m.
- Programe el trabajo para que se ejecute en un tiempo relativo a partir de ahora. Por ejemplo, dentro de 5 horas.
1. Programe un trabajo a las usando una fecha y hora específicas
Sintaxis:
$ at time date
Por ejemplo, para programar un trabajo a las 11 am del 20 de mayo, use el siguiente comando at.
$ at 11 am may 20
2. Programe un trabajo en usando el tiempo relativo
Puede programar un trabajo para que se ejecute utilizando un tiempo relativo a partir de ahora.
Sintaxis:
$ at now + COUNT UNIT
Por ejemplo, el siguiente trabajo se ejecutará dentro de 1 minuto.
$ at now + 1 min
El ejemplo anterior leerá los comandos de stdin y ejecutará el trabajo después de un minuto. Cuando da algo incorrecto en el formato de hora, obtendrá el error 'Hora distorsionada ‘.
Puede programar un trabajo en segundo plano para 1 hora a partir de ahora, (o) 1 día a partir de ahora usando el siguiente comando at:
$ at now + 1 hour $ at now + 1 day
Al igual que en el comando, también puede usar crontab para ejecutar trabajos a una hora programada. Consulte nuestro artículo anterior de 15 ejemplos de comandos cron.
3. Ver todos los trabajos programados en usando atq
Puede usar el comando atq (o at -l) para mostrar todos los trabajos de comando at que están programados o en ejecución.
El siguiente comando atq enumerará todos los at pendientes trabajos. El primer número que se muestra es el número de trabajo, seguido de la hora en que se ejecutará el proceso y el nombre de usuario.
$ atq 4 2010-04-20 11:00 a sathiya
4. Eliminar/Eliminar un trabajo programado usando atrm
Puede usar el comando atrm (o at -d) para eliminar un trabajo en particular. Por ejemplo, para eliminar el trabajo número 4, use el siguiente comando atrm.
$ atrm 4
5. Ejecute un trabajo solo cuando el promedio de carga del sistema sea <1.5 usando el comando por lotes
Puede programar un trabajo mediante el comando por lotes, que solicitará la entrada del comando, que se ejecutará cuando el promedio de carga del sistema sea inferior a 1,5.
$ batch
Al completar con éxito la entrada, obtendrá el número de trabajo. Para enumerar y eliminar trabajos por lotes, puede usar los comandos at explicados anteriormente.
6. Programe trabajos desde un archivo usando la opción -f
Primero cree un archivo de texto que contenga todos los comandos o scripts de shell que le gustaría ejecutar en segundo plano usando el comando at.
$ cat myjobs.txt /home/sathiya/calculate-space.sh /path/to/a/shell-script /path/to/any/command/or/script
Con la opción -f, puede ejecutar el comando at para obtener la entrada del archivo en lugar de la entrada estándar.
Seguir el comando at ejecutará todos los trabajos de myjobs.txt dentro de 1 hora a partir de ahora.
$ at -f myjobs.txt now + 1 hour
7. Permitir y denegar el uso de ciertos usuarios en trabajos
El administrador del sistema puede controlar quién puede programar un trabajo at y quién no puede usar los archivos at.allow y at.deny.
Primero, el sistema busca el archivo at.allow. Si at.allow existe, solo los nombres de usuario especificados en el archivo at.allow pueden usar at command.
A continuación, (si at.allow no existe), el sistema busca el archivo at.deny. Si at.deny existe, los nombres de usuario especificados en el archivo at.deny no pueden usar el comando at.
De manera predeterminada, la mayoría de los sistemas usan el archivo at.deny para evitar que ciertos usuarios usen el comando at, como www-data, guest, backup, man user.
8. Ejecutar en comando como nohup
Similar al comando nohup que discutimos anteriormente, puede ejecutar un comando (o script de shell) en el servidor remoto usando el comando at y cerrar sesión en el servidor.
$ at -f myjob now + 1 min $ exit
Nota:myjob seguirá ejecutándose incluso después de salir del servidor.
9. Formatos de tiempo de comando adicionales
Puede usar cualquiera de los siguientes formatos de fecha y hora del comando:
$ at 10 am tomorrow $ at 11:00 next month $ at 22:00 today $ at now + 1 week $ at noon