typicky když spustíte příkaz v terminálu, musíte počkat, až příkaz skončí, než můžete zadat jiný. Toto se nazývá spuštění příkazu v procesu popředí nebo popředí. Když proces běží v popředí, zabírá Váš shell a můžete s ním komunikovat pomocí vstupních zařízení.
Co když příkaz trvá dlouhou dobu a mezitím chcete spustit další příkazy? Máte k dispozici několik možností., Nejzřetelnější a nejjednodušší možností je spustit novou relaci shellu a spustit v ní příkaz. Další možností je spustit příkaz na pozadí.
proces na pozadí je proces / příkaz, který je spuštěn z terminálu a běží na pozadí bez interakce uživatele.
v tomto článku budeme hovořit o procesech na pozadí je Linux. Ukážeme vám, jak spustit příkaz na pozadí a jak udržet proces spuštěný po ukončení relace shellu.,
Spustit Linux Příkaz v Pozadí #
Chcete-li spustit příkaz na pozadí, přidejte symbolu ampersand (&
) na konci příkazu:
command &
shell job ID (obklopen závorkách) a proces ID se vytiskne na terminál:
25177
můžete mít více procesů běží na pozadí současně.
proces na pozadí bude i nadále psát zprávy do terminálu, ze kterého jste příkaz vyvolali., To suppress the stdout
and stderr
messages use the following syntax:
command > /dev/null 2>&1 &
>/dev/null 2>&1
means redirect stdout
to /dev/null
and stderr
to stdout
.,/div>
Aby proces na pozadí, na popředí, použijte fg
příkaz:
fg
Pokud máte více pracovních míst na pozadí, include %
a ID práce po příkazu:
fg %1
ukončit proces na pozadí pomocí kill
příkaz následovaný ID procesu:
kill -9 25177
Přesunout Proces v Popředí k Pozadí #
přesunout běžící proces v popředí v pozadí:
- Zastavit proces zadáním
Ctrl+Z
., - přesuňte zastavený proces na pozadí zadáním
bg
.
Mějte Procesy na Pozadí Běží Po Shell Východy #
Když vaše připojení klesne nebo se odhlásíte z shell relace, procesy na pozadí jsou ukončeny. Existuje několik způsobů, jak udržet proces spuštěný po ukončení relace interaktivního shellu.,
Jeden způsob, jak je odstranit úlohu z shellu práci ovládat pomocí disown
shell builtin:
disown
Pokud máte více než jeden úlohy v pozadí, include %
a ID práce po příkazu:
disown %1
Potvrďte, že práce je odstraněn z tabulky aktivních míst pomocí jobs -l
příkaz. Chcete-li uvést všechny spuštěné procesy, včetně vyřazených, použijte příkaz ps aux
.,
dalším způsobem, jak udržet proces běžící po ukončení shellu, je použití nohup
.
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.
Chcete-li spustit příkaz na pozadí pomocí nohup
typ příkazu:
nohup command &
příkaz výstup je přesměrován na nohup.out
soubor.,
nohup: ignoring input and appending output to 'nohup.out'
Pokud se odhlásíte nebo zavřete terminál, proces není ukončen.
alternativy #
existuje řada programů, které vám umožňují mít více interaktivních relací najednou.
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 GNU screen. 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 Tmux nadále běží, i když terminál zavřete.
závěr #
Chcete-li spustit příkaz na pozadí, zahrnout &
na konci příkazu.
Když spustíte příkaz na pozadí, nemusíte čekat, až skončí, než budete moci provést další.