Android

Příkaz Linux nohup

nohup - Run Commands in the Background - Linux CLI

nohup - Run Commands in the Background - Linux CLI

Obsah:

Anonim

Příkaz nohup provede jiný program určený jako jeho argument a ignoruje všechny signály SIGHUP (hangup). SIGHUP je signál, který je odeslán do procesu, když je jeho ovládací terminál uzavřen.

Obvykle, když spustíte program přes SSH, pokud vaše připojení klesne nebo se odhlásíte, relace je ukončena a všechny procesy spuštěné z terminálu se zastaví. Zde se hodí příkaz nohup . Ignoruje všechny signály zavěšení a proces bude pokračovat.

Jak používat příkaz nohup

Syntaxe příkazu nohup je následující:

nohup COMMAND

Příkaz nepřijímá žádné jiné možnosti kromě standardních --help a --version .

Podívejme se na následující příklad:

nohup mycommand

nohup: ignoring input and appending output to 'nohup.out'

nohup spustí příkaz mycommand v popředí a přesměruje výstup příkazu do souboru nohup.out . Tento soubor je vytvořen v aktuálním pracovním adresáři. Pokud uživatel spouštějící příkaz nemá oprávnění k zápisu do pracovního adresáře, soubor se vytvoří v domovském adresáři uživatele.

Pokud se odhlásíte nebo zavřete terminál, proces nebude ukončen.

Spuštění příkazu na pozadí

Použití nohup v popředí není příliš užitečné, protože až do dokončení příkazu nebudete moci komunikovat s shellem.

Chcete-li spustit příkaz na pozadí, připojte na konec příkazu symbol & :

nohup mycommand &

Výstup obsahuje ID úlohy shellu (obklopené závorkami) a ID procesu:

25177

ID úlohy můžete použít k přivedení příkazu do popředí pomocí příkazu fg .

Pokud z nějakého důvodu chcete proces ukončit, použijte příkaz kill následovaný ID procesu:

kill -9 25132

Přesměrování výstupu do souboru

Standardně nohup přesměruje výstup příkazu do souboru nohup.out . Pokud chcete přesměrovat výstup do jiného souboru, použijte standardní přesměrování prostředí.

Například pro přesměrování standardního výstupu a standardní chyby na mycommand.out byste použili:

nohup mycommand > mycommand.out 2>&1 &

Přesměrování standardního výstupu a standardní chyby na různé soubory:

nohup mycommand > mycommand.out 2> mycommand.err &

Alternativy

Existuje několik alternativních programů, pomocí kterých můžete zabránit tomu, aby byl příkaz ukončen při zavření terminálu nebo odpojení.

Obrazovka

Obrazovka nebo GNU Obrazovka je terminálový multiplexerový program, který vám umožní spustit relaci obrazovky a otevřít libovolný počet oken (virtuálních terminálů) uvnitř této relace. Procesy spuštěné na obrazovce se budou nadále zobrazovat, i když se jejich okno nezobrazí, i když se odpojíte.

Tmux

Tmux je moderní alternativa k obrazovce GNU. S Tmux můžete také vytvořit relaci a otevřít v ní více oken. Relace Tmux jsou trvalé, což znamená, že programy spuštěné v Tmuxu budou i nadále fungovat, i když zavřete terminál.

Popřít

disown je vestavěný shell, který odstraní úlohu shellu z ovládání úlohy shellu. Na rozdíl od nohup , můžete použít disown na běžící procesy také.

Závěr

nohup umožňuje zabránit ukončení příkazů při odhlášení nebo ukončení terminálu.

terminál nohup