GNU/Linux >> Znalost Linux >  >> Linux

Jak spustit příkaz na pozadí se zpožděním?

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

Tímto způsobem bude váš skript pokračovat, nebo okamžitě obnovíte kontrolu, zatímco nový úkol na pozadí skriptu se spustí dvěma příkazy:sleep a echo.

Běžná chyba se pokouší zadat buď sleep nebo echo nebo obě & který nebude fungovat podle představ. Spuštění řady příkazů v () ačkoli je vytvoří v samostatném procesu shellu, který pak můžete poslat celé na pozadí pomocí & .

K tomu vtipu, kde jsem to považoval za aktivně užitečné. Ve vestavěném zařízení, které vyvíjím, je hlavní aplikace, která pracuje s hlídacím psem. Pokud selže způsobem, který spouští reset hlídacího psa brzy po spuštění, opakovaně, je těžké to na dálku opravit, protože doba mezi startem OS a resetem je poměrně krátká, nestačí na ssh a zablokuje spuštění aplikace. Potřebuji tedy způsob, jak zjistit, že se systém restartoval tak rychle, a zavést zpoždění, pokud ano, abych měl čas to opravit ručně.

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

Pokud se přihlásím a provedu touch /tmp/noautostart hlavní aplikace se nespustí. Pokud hlídací pes zasáhne, rm /tmp/startdelay se neprovede a při příštím spuštění systému mi dá dalších 30 s na jeho zastavení. Jinak bude restart rychlý, bez zpoždění.


použijte at příkaz

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

který poběží na pozadí


Pokud chcete, aby se něco spustilo za 5 minut, ale zbytek vašeho programu pokračoval (nebo skončil), musíte také nastavit režim spánku:

#!/bin/bash

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

runWithDelay 3 echo world &
echo hello    

Tím se vytiskne hello a poté o 3 sekundy později (po ukončení hlavního programu) vytiskněte world .

Důležitou součástí je & pro rozvětvení provádění funkce na pozadí.


Linux
  1. Jak auditovat oprávnění pomocí příkazu find

  2. Jak odeslat aplikace z příkazového řádku přímo na pozadí?

  3. Jak spustit příkaz Vim z shellu?

  1. Jak spustit příkaz jako správce systému (root)?

  2. Jak mohu spustit jiný příkaz, ale se stejnými argumenty?

  3. Jak zkombinovat příkaz „tar“ s příkazem „najít“

  1. Jak používat w Command v Linuxu s příklady

  2. Jak používat příkaz chgrp s příklady

  3. Jak najít soubory v Linuxu pomocí příkazu Najít