Kromě toho můžete použít znak "&" ke spuštění mnoha procesů prostřednictvím jednoho (1) ssh připojení, abyste zachovali minimální počet terminálů. Například mám jeden proces, který naslouchá zprávám, aby extrahoval soubory, druhý proces naslouchá zprávám, aby nahrál soubory:Pomocí „&“ mohu spouštět obě služby v jednom terminálu prostřednictvím jediného ssh připojení k mému serveru. .
Tyto procesy běžící přes "&" také "zůstanou naživu" po zavření ssh relace. Docela elegantní a užitečné, pokud je ssh připojení k serveru přerušeno a nebyl použit žádný terminálový multiplexer (screen, tmux, byobu).
Není-li řečeno jinak, příkazy přebírají popředí. V jedné relaci shellu běží pouze jeden proces „v popředí“. Symbol &dává pokyn, aby se příkazy spouštěly v procesu na pozadí, a okamžitě se vrátí na příkazový řádek pro další příkazy.
sh my_script.sh &
Proces na pozadí nebude zůstat naživu po uzavření shellové relace. SIGHUP ukončí všechny běžící procesy. Standardně stejně. Pokud je váš příkaz dlouho spuštěný nebo běží neomezeně dlouho (tj.:microservice), musíte jej pr-pend s nohoup, aby zůstal spuštěný i po odpojení od relace:
nohup sh my_script.sh &
UPRAVIT: Zdá se, že existuje šedá oblast týkající se uzavírání procesů na pozadí při použití &. Jen si uvědomte, že shell může zavřete proces v závislosti na vašem operačním systému a místních konfiguracích (zejména na CENTOS/RHEL):https://serverfault.com/a/117157.
&
způsobí spuštění příkazu na pozadí.
Od man bash
:
Pokud je příkaz ukončen ovládacím operátorem & , shell provede příkaz na pozadí v podskořápce. Shell nečeká na dokončení příkazu a návratový stav je 0.