GNU/Linux >> Znalost Linux >  >> Linux

Jak spustit příkaz / skript Linux Shell na pozadí

Obvyklým stylem provádění příkazu na linuxovém terminálu je jednoduše jej spustit a počkat, až se ladně ukončí. Jakmile příkaz skončí, můžete pokračovat v provádění dalších příkazů za sebou. Tomu se říká spouštění příkazů v popředí. Jak slovo napovídá, můžete vizuálně vidět výstup příkazu na terminálu.

Někdy však spuštění příkazů v popředí může představovat řadu problémů. Ukončení příkazu může trvat příliš dlouho, což způsobí, že ztrácíte drahocenný čas a jindy může být zcela připojen k relaci shellu a zůstanete uvězněni.

V takových případech je nejlepší volbou spuštění příkazu na pozadí. Můžete odeslat příkaz(y) na pozadí, když současně spouštíte jiné příkazy na popředí. To zvyšuje efektivitu práce na terminálu a šetří váš čas.

V této příručce se zaměříme na to, jak můžete spouštět příkazy nebo skripty shellu Linux na pozadí.

Spuštění příkazu shellu na pozadí pomocí znaménka (&) 

Chcete-li spustit příkaz nebo skript na pozadí, ukončete jej znakem ampersand (&) na konci, jak je znázorněno.

$ příkaz &

POZNÁMKA:Ukončení příkazu znakem ampersand od vás příkaz neodpojí. Pouze jej odešle na pozadí aktuálního shellu, který používáte, příkaz bude stále tisknout výstup do STDOUT nebo STDERR, což vám zabrání ve spouštění dalších příkazů na terminálu.

Lepším přístupem je přesměrovat příkaz na /dev/null a později připojit znak ampersand na konec, jak je znázorněno

$ příkaz &>/dev/null &

Chcete-li potvrdit, že byl příkaz odeslán na pozadí, spusťte příkaz jobs.

Chcete-li ukončit proces na pozadí, spusťte příkaz kill následovaný PID procesu následovně. Volba -9 proces okamžitě ukončí.

$ kill -9 138314

Spuštění příkazu nebo skriptu shellu na pozadí pomocí příkazu nohup

Dalším způsobem, jak spustit příkaz na pozadí, je použití příkazu nohup. Příkaz nohup, zkratka pro no hang up, je příkaz, který udržuje proces spuštěný i po opuštění shellu.

Dělá to tak, že blokuje procesy v přijímání signálu SIGHUP (Signal Hang UP), což je signál, který je obvykle odesílán procesu, když opouští terminál.

Chcete-li odeslat příkaz nebo skript na pozadí a ponechat jej spuštěný, použijte syntaxi:

$ nohup příkaz &>/dev/null &

$ nohup shell-script.sh &>/dev/null &

Například,

$ nohup ping google.com &>/dev/null &

Opět můžete ověřit, že příkaz běží na pozadí pomocí příkazu:

$ jobs

Závěr

V této příručce jsme se zabývali dvěma způsoby spouštění příkazů nebo skriptů shellu na pozadí. Viděli jsme, jak můžete spouštět příkazy na pozadí pomocí &sign a příkazu nohup.

Přečtěte si také :Linuxový příkaz Zip a rozbalení s příklady


Linux
  1. Jak používat aliasy shellu v Linuxu

  2. Jak uložit příkaz do proměnné v shell skriptu?

  3. Jak spustit skript shellu při spuštění

  1. Jak vytvořit skript příkazu Linux

  2. Jak spustit skript Shell na pozadí?

  3. Jak vyčistit výstup příkazu linux 'script'

  1. Jak spustíte skript při přihlášení v *nix?

  2. Jak spustit skript na pozadí (linux openwrt)?

  3. Proč spouštět příkaz prostředí Linux s '&'?