GNU/Linux >> Znalost Linux >  >> Linux

Asynchronní příkazy shellu

Případně po spuštění programu můžete stisknout Ctrl-Z, která zastaví váš program, a poté zadat

bg

který přesune váš naposledy zastavený program na pozadí. (Užitečné, pokud jste začali něco bez '&' a přesto to chcete mít v pozadí, aniž byste to restartovali)


nohup cmd

nezavěsí, když zavřete terminál. výstup ve výchozím nastavení přejde na nohup.out

Můžete to zkombinovat s pozadím,

nohup cmd &

a zbavit se výstupu,

nohup cmd > /dev/null 2>&1 &

můžete také disown příkaz. zadejte cmd , Ctrl-Z , bg , disown


Skript stačí spustit na pozadí:

$ myscript &

Všimněte si, že se to liší od zadání & uvnitř vašeho skriptu, který pravděpodobně nebude dělat to, co chcete.


Všichni prostě zapomněli disown . Takže tady je shrnutí:

  • & přesune úlohu do pozadí.

    • Zablokuje jej při pokusu o čtení vstupu a
    • Přinutí shell nečekat na dokončení.
  • disown odebere proces z ovládání úloh shellu, ale stále jej ponechá připojený k terminálu.

    • Jedním z výsledků je, že mu shell nepošle SIGHUP (Pokud shell obdrží SIGHUP , také odešle SIGHUP k procesu, což normálně způsobí ukončení procesu).
    • A samozřejmě jej lze použít pouze na úlohy na pozadí (protože jej nemůžete zadat, když je spuštěna úloha na popředí).
  • nohup odpojí proces od terminálu, přesměruje jeho výstup na nohup.out a chrání jej před SIGHUP .

    • Proces neobdrží žádné odeslané SIGHUP .
    • Je zcela nezávislý na kontrole úloh a v zásadě by se dal použít i pro úlohy v popředí (ačkoli to není příliš užitečné).
    • Obvykle se používá s & (jako podkladová práce).

Linux
  1. Vypsat všechny příkazy, které Shell zná?

  2. Použití kláves Vi k úpravě příkazů Shell v Unixu?

  3. Jak změnit Cron Shell (sh to Bash)?

  1. Rozdělení dlouhých příkazů ve skriptech Shell?

  2. Pokračovat v příkazech Shell po připojení k Ssh?

  3. Jak spustit skript Shell na pozadí?

  1. Spouštění příkazů Linuxu na pozadí a v popředí

  2. 15 užitečných vestavěných příkazů Bash Shell (s příklady)

  3. Spouštějte příkazy Shell z programu spuštěného ve WINE