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í:

  1. Zastavit proces zadáním Ctrl+Z.,
  2. 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ší.

Articles

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *