GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo ejecutar un comando en segundo plano con un retraso?

( sleep 300 ; echo "80" > /sys/class/leds/blue/brightness ) &

De esa manera, su secuencia de comandos continúa, o restaura el control de inmediato, mientras que una nueva tarea en segundo plano del script comienza, con dos comandos:dormir y hacer eco.

El error común es intentar dar sleep o echo o ambos & que no funcionará según lo previsto. Lanzamiento de una serie de comandos en () aunque los genera en un proceso de shell separado, que luego puede enviar en segundo plano con & .

A ese ingenio, donde lo encontré activamente útil. En un dispositivo integrado que desarrollo, está la aplicación principal que funciona con un perro guardián. Si falla de una manera que activa el reinicio del perro guardián poco después del inicio, repetidamente, es difícil solucionarlo de forma remota, ya que el período entre el inicio del sistema operativo y el reinicio es bastante corto, no lo suficiente como para entrar y bloquear el inicio de la aplicación. Así que necesito una forma de determinar que el sistema se reinició tan rápido e introducir un retraso si lo hizo, para tener tiempo de arreglarlo manualmente.

 [ -f /tmp/startdelay ] && sleep 30
 touch /tmp/startdelay
 ( sleep 30 ; rm /tmp/startdelay ) &
 [ -f /tmp/noautostart ] && exit 0
 start_app

Si inicio sesión y realizo touch /tmp/noautostart la aplicación principal no se iniciará. Si el perro guardián se activa, rm /tmp/startdelay no se realizará y la próxima vez que se inicie el sistema, me dará 30 segundos adicionales para detenerlo. De lo contrario, el reinicio será rápido, sin demora.


utiliza el at comando

echo "echo \"80\" > /sys/class/leds/blue/brightness" | at now + 5 min

que se ejecutará en segundo plano


Si desea que algo se ejecute en 5 minutos, pero que el resto de su programa continúe (o finalice), también debe poner en segundo plano la suspensión:

#!/bin/bash

runWithDelay () {
    sleep $1;
    shift;
    "${@}";
}

runWithDelay 3 echo world &
echo hello    

Esto imprimirá hello y luego 3 segundos más tarde (después de que el programa principal haya salido), imprima world .

La parte importante es el & para bifurcar la ejecución de la función en segundo plano.


Linux
  1. Cómo auditar permisos con el comando de búsqueda

  2. ¿Cómo ejecutar un comando como administrador del sistema (raíz)?

  3. ¿Cómo enviar aplicaciones de línea de comandos directamente al fondo?

  4. ¿Cómo puedo ejecutar un comando diferente pero con los mismos argumentos?

  5. Cómo combinar el comando 'tar' con 'buscar'

Cómo ejecutar comandos de Linux en segundo plano

Cómo usar el comando RPM (con ejemplos)

Cómo cambiar el color de salida de 'Echo' en Linux

Cómo encontrar archivos con el comando fd en Linux

Ejecute procesos en segundo plano en Linux usando el comando Pantalla

Cómo usar el comando de suspensión en Linux:explicado con ejemplos