Si desea programar un trabajo de Linux para ejecutarse solo una vez, Cron es redundante.¡La familia de comandos AT es justo lo que necesitas! Y si desea ejecutar procesos solo cuando su sistema tiene recursos gratuitos, puede usar el procesamiento por lotes.
- Cómo programar trabajos en Linux
- Instalación del comando AT
- Cómo usar el comando AT de manera interactiva
- Formatos de fecha y hora
- Ver la cola de tareas
- Primera línea: Esto nos dice que los comandos se ejecutarán debajo del shell SH. Segunda línea: vemos que los comandos se ejecutarán con el usuario y la identificación del grupo 1000. Estos son los valores para la persona que ejecutó el comando AT. Línea tres: la persona que recibe los correos electrónicos. Línea cuatro: la máscara de usuario es 22. Esta es la máscara utilizada para establecer los permisos predeterminados para cualquier archivo creado en esta sesión SH. La máscara se resta del 666, lo que nos da 644 (el equivalente octal de RW-R-R–). El resto de los datos: la mayor parte son variables de entorno.
- lote
- Por defecto, cualquiera puede usar en. Si desea limitar quién puede usarlo, use el archivo AT. Esto es más fácil que agregar a todos los que no pueden usar el archivo AT. Deny.
- Ahora vamos a editar el archivo AT. Vamos a agregar a Dave y Mary, pero a nadie más podrá usarlo.
- Como puede ver, tanto en y lotes son perfectos para tareas que solo deben hacerse una vez. De nuevo, como una revisión rápida:
- В
- Eliminar la tarea 11 de la cola en la ventana terminal.
Cómo programar trabajos en Linux
El Cron Daemon mantiene una lista de tareas que se ejecuta en momentos específicos. Estas tareas y programas se ejecutan en segundo plano en los tiempos programados. Esto le brinda mucha flexibilidad en las tareas de programación que deben repetirse. Si necesita ejecutar una tarea una vez por hora, a una hora determinada todos los días, o una vez al mes o año, puede configurarla en Cron.
Sin embargo, esto no ayudará si solo desea programar una tarea para ejecutarse una vez. Claro, puede configurarlo en Cron, pero luego debe recordar regresar y eliminar la entrada de Crontab después de que se realice la tarea, lo cual es inconveniente.
En Linux, si está luchando con un problema, es casi una garantía de que alguien más también ha luchado con él. Afortunadamente, dado que los sistemas operativos similares a UNIX han existido durante mucho tiempo, existe una excelente posibilidad de que alguien haya creado una solución a su problema.
Para el problema descrito anteriormente, tienen uno, y se llama.
Instalación del comando AT
Tuvimos que instalar en Ubuntu 18. 04 y Manjaro 18. 1. 0 (ya estaba instalado en Fedora 31).
Para instalar en Ubuntu, use este comando:
sudo apt-get instalación en
Una vez que se completa la instalación, puede iniciar AT Daemon usando este comando:
SUDO SystemCTL Enable - -Now ATD. Service
En Manjaro se instala usando este comando:
sudo Pacma n-Sy en
Después de que se complete la instalación, ingrese este comando para iniciar el daemon AT:
SUDO SystemCTL Enable - -Now ATD. Service
En cualquier distribución, puede ingresar este comando para verificar que el demonio ATD se esté ejecutando:
p s-e |Grep ATD
Cómo usar el comando AT de manera interactiva
Para usarlo, debe asignarle una fecha y hora para ejecutar. Puede escribirlos de una manera muy flexible, como discutiremos más adelante en este artículo.
Sin embargo, incluso si vamos a usar en modo interactivo, debe especificar la fecha y la hora por adelantado. Si no incluye nada en la línea de comandos o ingrese algo más que la fecha y la hora, responderá con «tiempo confuso» como se muestra a continuación:
en plátano
Las fechas y tiempos pueden ser explícitas o relativas. Por ejemplo, suponga que desea que se ejecute un comando en un minuto. AT sabe lo que significa «ahora», por lo que puede usar «ahora» y agregarle un minuto, por ejemplo:
A ahora + 1 minuto
En Imprime el mensaje y AT ADTA, y espera a que escriba los comandos que desea programar. Sin embargo, primero considere el mensaje como se muestra a continuación:
Cómo organizar sus listas en Linux con Dynalist
Te dice cuándo comienzas una instancia de shell de SH y ejecutarás comandos dentro de eso. Sus comandos no se ejecutarán en el shell bash, que es compatible con el shell sh pero tiene un conjunto de características más rico.
Si sus comandos o scripts intentan usar una función o instalación proporcionada por Bash, pero SH no lo hace, fallarán.
Es fácil probar si sus comandos o scripts se ejecutarán en SH. Use el comando sh para ejecutar el shell sh:
La línea de comando cambiará a un signo de dólar ($), y ahora puede ejecutar sus comandos y verificar que funcionen correctamente.
Para volver al shell bash, ingrese el comando de salida:
salida
No verá la salida estándar o los mensajes de error de los comandos. Esto se debe a que el shell SH se ejecuta como una tarea de fondo y se ejecuta sin ninguna interfaz de pantalla.
Cualquier salida de comandos, bueno o malo, se le envía un correo electrónico. Se envía a través del sistema de correo interno a quien ejecute el comando AT. Esto significa que necesita instalar y configurar este sistema de correo electrónico interno.
Muchos (la mayoría) los sistemas de Linux no tienen un sistema de correo electrónico interno porque rara vez es necesario. Aquellos que generalmente usan un sistema como enviar correo electrónico o postfix. Si su sistema no tiene un sistema de correo electrónico interno, puede usar scripts para escribir en archivos o redirigir la salida a los archivos para agregar registro.
Si el comando no genera mensajes de salida o salida estándar, aún no recibirá un correo electrónico. Muchos comandos de Linux indican el éxito a través del silencio, por lo que en la mayoría de los casos no recibirá un correo electrónico.
Ahora es el momento de escribir el comando. En este ejemplo, usaremos un pequeño archivo de script llamado Sweep. Sh que elimina * . bak, * . tmp y * . o archivos. Escriba la ruta al comando como se muestra a continuación y presione Entrar.
Aparecerá otra línea de comando, y puede agregar tantos comandos como desee. Por lo general, es más conveniente tener sus comandos en un script y simplemente llame a ese script internamente en la dirección.
Presione Ctrl + D para decirle que ha terminado de agregar equipos. en exposiciones, lo que significa el final de la transferencia. Le dicen el número de trabajo y el tiempo que se inició el trabajo, como se muestra a continuación:
Después de completar el trabajo. Ingrese lo siguiente para verificar su correo interno:
correo
Si no hay correo, puede considerarlo un éxito. Por supuesto, puede verificar si los archivos * . bak, * . tmp y * . o se han eliminado para asegurarse de que el comando funcionara.
Escriba lo siguiente para volver a ejecutarlo todo:
A ahora + 1 minuto
Después de un minuto, escriba lo siguiente para volver a verificar el correo:
correo
¡Hola, tenemos correo! Para leer el mensaje número uno, presione 1 y luego presione Entrar.
Recibimos un correo electrónico de AT porque los comandos en el script generaron mensajes de error. En este ejemplo, no había archivos para eliminar porque cuando ejecutamos previamente el script, los eliminaba.
Presione D + Ingrese para eliminar el correo electrónico y Q + Ingrese para salir del programa de correo electrónico.
Formatos de fecha y hora
Cuando se trata de formatos de tiempo en los que puede usar, tiene mucha flexibilidad. Aquí están algunos ejemplos:
Cómo apagar una computadora Linux que no se apagará
a las 11:00 am.
Corre a las 11:00 am mañana:
A las 11:00 am mañana.
Corre a las 11:00 am en este día la próxima semana:
a las 11:00 am la próxima semana
Corre en este momento, este día, la próxima semana:
la próxima semana
Lanzamiento a las 11:00 am el próximo viernes:
a las 11:00 am de al viernes
Lanzar en este momento el próximo viernes:
En el siguiente viernes
Lanzar a las 11:00 am esto a las 11:00 am el próximo mes:
a las 11:00 am el próximo mes
Lanzar a las 11:00 am en un día específico:
a las 11:00 am 15/03/2020
Corre en 30 minutos:
A ahora + 30 minutos
Correr en dos horas:
A ahora + 2 horas
Corre en este momento mañana:
mañana
Corre en este momento el jueves:
el jueves
a la medianoche
al mediodía
Si eres británico, incluso puedes programar el comando de ejecutar durante la hora del té (4pm):
en la hora del té
Ver la cola de tareas
Puede ingresar el comando ATQ para ver la cola de trabajos programados, como se muestra a continuación.
Para cada comando en la cola, ATQ muestra la siguiente información:
Primera línea: Esto nos dice que los comandos se ejecutarán debajo del shell SH. Segunda línea: vemos que los comandos se ejecutarán con el usuario y la identificación del grupo 1000. Estos son los valores para la persona que ejecutó el comando AT. Línea tres: la persona que recibe los correos electrónicos. Línea cuatro: la máscara de usuario es 22. Esta es la máscara utilizada para establecer los permisos predeterminados para cualquier archivo creado en esta sesión SH. La máscara se resta del 666, lo que nos da 644 (el equivalente octal de RW-R-R–). El resto de los datos: la mayor parte son variables de entorno.
Resultados de la prueba. La prueba verifica si es accesible el directorio de ejecución. Si no puede, se produce un error y el trabajo termina. Comandos para ser ejecutados. Estos se enumeran y se muestran el contenido de los scripts programados. Tenga en cuenta que aunque el script en nuestro ejemplo anterior fue escrito para ejecutarse bajo Bash, aún se ejecutará en el shell SH.
Comando lotes
El comando de lotes actúa de manera similar al comando AT, pero con tres diferencias importantes:~Solo puede usar el comando por lotes en modo interactivo. En lugar de programar trabajos para ejecutarse en un momento específico, los agrega a una cola y el comando de lotes los ejecuta cuando la carga promedio del sistema está por debajo de 1. 5. Debido a lo anterior, nunca especifica una fecha y hora utilizando el comando por lotes.
Cuando usa un comando por lotes, lo invoca por nombre sin parámetros de línea de comandos, por ejemplo:
lote
Luego agregue tareas tal como lo haría con el comando AT.
Controlar el acceso al comando AT
Los archivos at. low y at. deny definen quién puede usar la familia AT de comando. Están ubicados en el directorio / etc. Por defecto, solo existe el archivo at. deny, y se crea cuando está instalado.
Así es como funcionan:
AT. DEDY: enumera aplicaciones y objetos que no pueden usarse para programar trabajos. AT. LOW: Listas que pueden usar en los trabajos para programar. Si el archivo at. low no existe, AT usa solo el archivo at. deny.
Por defecto, cualquiera puede usar en. Si desea limitar quién puede usarlo, use el archivo AT. Esto es más fácil que agregar a todos los que no pueden usar el archivo AT. Deny.
Así es como se ve el archivo at. deny:
sudo menos /etc/at. denyEste archivo enumera los componentes del sistema operativo que no se pueden usar. Muchos de ellos no pueden hacerlo por razones de seguridad, por lo que no desea eliminarlos del archivo.
Ahora vamos a editar el archivo AT. Vamos a agregar a Dave y Mary, pero a nadie más podrá usarlo.
Primero escribimos lo siguiente:
sudo gedit /etc/at. allow.
En el editor, agregamos los dos nombres como se muestra a continuación y luego guardamos el archivo.
Si alguien más intenta usarlo, se les dirá que no tiene permiso. Por ejemplo, suponga que un usuario llamado Eric entra en lo siguiente:
Se le negará, como se muestra a continuación.
Nuevamente, Eric no está en el archivo at. deny. Una vez que ponga a alguien en el archivo AT. ALTOW, a nadie y a todos los demás se les negará el permiso para usarlo.
Genial para un solo
Como puede ver, tanto en y lotes son perfectos para tareas que solo deben hacerse una vez. De nuevo, como una revisión rápida:
Si necesita hacer algo fuera de lo común, programarlo en. Si solo desea ejecutar una tarea cuando la utilización del sistema es lo suficientemente baja, use el procesamiento por lotes.
toadmin. ru.
В
В
В
В
Mal uso
В
В
В
В
Confirmación
В
В
В
Dirección de correo electrónico interna en la ventana del terminal.
Salir de
Un
Un
Un
Eliminar la tarea 11 de la cola en la ventana terminal.
Salir de
В