Každý příkaz v Linuxu spouští proces v okamžiku jeho provádění, který se automaticky ukončí při opuštění terminálu. Předpokládejme, že spouštíte programy přes SSH a pokud spojení přeruší, relace bude ukončena, všechny prováděné procesy se zastaví a můžete čelit obrovské náhodné krizi. V takových případech může být spouštění příkazů na pozadí pro uživatele velmi užitečné, a to je místo příkaz nohup přichází do obrazu. nohup (Žádné zavěšení) je příkaz v systémech Linux, který spouští proces i po odhlášení z shellu/terminálu.
Příkaz Nohup
Obvykle je každý proces v systémech Linux odeslán a SIGHUP (zavěšení signálu) která je zodpovědná za ukončení procesu po zavření/opuštění terminálu. Příkaz Nohup zabraňuje procesu přijímat tento signál při zavření nebo opuštění terminálu/shell. Jakmile je úloha spuštěna nebo spuštěna pomocí příkazu nohup, stdin nebudou uživateli dostupné a nohup.out soubor se používá jako výchozí soubor pro stdout a stderr . Pokud je výstup příkazu nohup přesměrován do jiného souboru, nohup.out soubor se nevygeneruje.
Syntaxe příkazu Nohup
Syntaxe pro použití příkazu Nohup je jednoduchá:
řetězec na znak java
nohup command [options] &>
-
`command`>: Určuje příkaz nebo skript, který chcete spustit. -
`[options]`>: Volitelné argumenty nebo příznaky, které upravují chování příkazu. -
`&`>: Umístěním znaku ampersand (&) na konec příkazu dá shellu pokyn spustit příkaz na pozadí.
Práce s příkazem nohup
- Kontrola verze Nohup
- Spuštění procesu pomocí Nohup
- Spuštění procesu na pozadí pomocí Nohup
- Chcete-li spustit více příkazů na pozadí
Kontrola verze Nohup
Kontrola verze Nohup je jednoduchý proces. Verzi Nohup nainstalovanou ve vašem systému můžete obvykle zkontrolovat pomocí ` --version`> vlajka. Stačí provést následující příkaz:
nohup --version>
Výstup:
Spuštění procesu pomocí Nohup
Chcete-li spustit proces pomocí Nohup, jednoduše přidejte požadovaný příkaz snohup>. Pokud například chcete spustit bash skript s názvemgeekfile.py>pomocí Nohup byste použili následující příkaz:
nohup bash geekfile.sh>
Výstup:
Chcete-li přesměrovat výstup na výstup.txt soubor:
nohup bash geekfile.sh>output.txt>
Výstup:
mvc java
Spuštění procesu na pozadí pomocí Nohup
Chcete-li spustit příkaz na pozadí, „ &' symbol je připojen na konec příkazu. Po spuštění se po spuštění příkazu na pozadí nevrátí do příkazového řádku shellu. Lze jej vrátit do popředí pomocí fg příkaz.
nohup bash geekfile.sh & fg>
Výstup:
boto3
Poznámka: Číslo v hranatých závorkách představuje id práce a číslo vedle je id procesu .
Chcete-li spustit více příkazů na pozadí
Příkaz nohup lze použít ke spuštění více příkazů na pozadí.
nohup bash -c 'commands'>
Příklad:
nohup bash -c 'cal && ls'>
Výstup:
Zde bude výstup standardně uložen v nohup.out . Chcete-li jej přesměrovat, zadejte:
nohup bash -c 'commands'>název_souboru.txt>
Příklad:
nohup bash -c 'cal && ls'>output.txt>
Výstup:
char na řetězec v jazyce Java
Příkaz nohup v Linuxu – Nejčastější dotazy
Co je nohup> příkaz v Linuxu a co dělá?
The
nohup>příkaz znamená zákaz zavěšení. Umožňuje vám spouštět příkaz nebo shell skript takovým způsobem, že pokračuje v běhu i po odhlášení nebo zavření terminálu. Tím se zabrání ukončení příkazu při ukončení relace terminálu.čtení ze souboru csv v jazyce Java
Jak mohu použít nohup> příkaz?
Použít
nohup>, jednoduše jej přidejte před příkaz, který chcete spustit. Například:nohup command_to_run &>The
&>symbol na konci přesune příkaz do pozadí, což vám umožní pokračovat v používání terminálu, zatímco příkaz běží.
Kde ano nohup> odeslat výstup příkazu?
Ve výchozím stavu,
nohup>přesměruje standardní výstup (stdout) i standardní chybu (stderr) do souboru s názvemnohup.out>v aktuálním adresáři. V případě potřeby můžete zadat jiný výstupní soubor.
Mohu použít nohup> s interaktivními příkazy nebo programy?
Zatímco
nohup>se obvykle používá s neinteraktivními příkazy nebo skripty, můžete jej použít s interaktivními příkazy. Chování však může být nepředvídatelné, zejména pokud příkaz očekává vstup od uživatele. Obecně se doporučuje vyhnout se použitínohup>s interaktivními programy.
Jak mohu zkontrolovat stav spuštěného příkazu s nohup> ?
Od té doby
nohup>spustí příkaz na pozadí, můžete použít standardní nástroje Linuxu, jako jeps>nebotop>zkontrolovat stav procesu. Například:ps aux | grep>Zobrazí se vám informace o procesu, včetně jeho PID (Process ID), které pak můžete použít ke správě nebo sledování příkazu.
Závěr
V Linuxu, když spustíte příkaz, obvykle se zastaví, když zavřete terminál. Ale s nohup> , můžete jej nechat běžet i po zavření terminálu. To je velmi užitečné, zvláště pokud spouštíte příkazy vzdáleně a nechcete, aby se zastavily, pokud vaše připojení přestane fungovat.nohup>funguje tak, že chrání váš příkaz před signály, které by jej normálně zastavily. Stačí přidatnohup>před vaším příkazem a pokračuje. Výstup příkazu můžete také odeslat do souboru. Nezapomeňte, že je to nejlepší pro neinteraktivní úlohy a stav příkazu můžete zkontrolovat pomocí nástrojů, jako jeps>. Tak,nohup>je jako záchranná síť pro vaše příkazy, která zajišťuje, že se budou choulit, i když se nedíváte.