nohup
příkaz spustí další program, uvedené jako svůj argument a ignoruje všechny SIGHUP
(hangup) signály. SIGHUP
je signál, který je odeslán do procesu, když je jeho řídící 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 provedené z terminálu se zastaví. Zde se hodí příkaz nohup
., Ignoruje všechny zavěšené signály a proces bude pokračovat.
Jak Používat nohup Příkaz #
syntaxe nohup
příkaz je následující:
nohup COMMAND
příkaz nepřijímá žádné další možnosti, kromě standardní --help
--version
.,
podívejme se na následující příklad:
nohup mycommand
nohup: ignoring input and appending output to 'nohup.out'
nohup
běží mycommand
příkaz v popředí a přesměruje výstup příkazu nohup.out
soubor. Tento soubor je vytvořen v aktuálním pracovním adresáři . Pokud uživatel, který spustil příkaz nemá oprávnění k zápisu do pracovního adresáře, soubor je vytvořen v domovském adresáři uživatele.
Pokud se odhlásíte nebo zavřete terminál, proces není ukončen.,
spuštění Příkazu na Pozadí #
Pomocí nohup
v popředí není velmi užitečné, protože nebudete moci interagovat s shellem až příkaz dokončí.
Chcete-li spustit příkaz na pozadí , připojit &
symbol na konci příkazu:
nohup mycommand &
výstup zahrnuje shell job ID (obklopen závorkách) a ID procesu:
25177
můžete použít ID úlohy přinést příkaz do popředí pomocí fg
příkaz.,
Pokud z nějakého důvodu chcete ukončit proces, pomocí kill
příkaz následovaný ID procesu:
kill -9 25132
Přesměrování Výstupu do Souboru #
ve výchozím nastavení, nohup
přesměruje výstup příkazu nohup.out
soubor. Pokud chcete přesměrovat výstup do jiného souboru, použijte standardní přesměrování shellu.,
například přesměrovat standardní výstup a standardní chybový mycommand.out
použití:
nohup mycommand > mycommand.out 2>&1 &
přesměrování standardního výstupu a standardní chybu rozdílných souborů:
nohup mycommand > mycommand.out 2> mycommand.err &
Alternativy #
Existuje několik alternativních programů, které můžete použít, aby se zabránilo příkaz, který má být ukončena při zavření terminálu nebo odpojen.,
Screen #
Obrazovky nebo GNU Screen je terminálový multiplexer program, který umožňuje start screen a otevřít libovolný počet oken (virtuální terminály) uvnitř této relaci. Procesy běžící na obrazovce se budou i nadále spouštět, pokud jejich okno není viditelné, i když se odpojíte.
Tmux #
Tmux je moderní alternativa k obrazovce GNU. S Tmuxem můžete také vytvořit relaci a otevřít více oken uvnitř této relace. Relace Tmux jsou trvalé, což znamená, že programy běžící v Tmuxu budou i nadále spouštět, i když terminál zavřete.,
Disown #
disown
je shell builtin, který odstraní práci shellu z kontroly úloh shellu. Na rozdíl od nohup
můžete použít disown
také pro spuštěné procesy.
závěr #
nohup
umožňuje zabránit ukončení příkazů při odhlášení nebo opuštění terminálu.