GNU/Linux >> Znalost Linux >  >> Linux

Spouštějí se příkazy v bash skriptu paralelně nebo jeden po druhém?

Jak to vypadá, budou spuštěny jeden po druhém, bez ohledu na to, zda selhaly nebo ne. Musí pouze v určitém okamžiku skončit, pak je spuštěn další příkaz. Jeden po druhém.

Pokud chcete, aby byly provedeny pouze v případě, že předchozí příkazy neukončily s chybou, použijte:

python do_this_first.py && python do_this_second.py && python do_this_last.py

Zde dva ampersandy fungují jako logické AND . Druhý skript se spustí pouze tehdy, když první skončil čistě, a třetí pouze tehdy, když druhý běžel bez chyb. Pokud došlo k nějaké chybě, nespustí se žádný z následujících příkazů.

Pokud je však chcete spouštět paralelně, můžete to udělat – ale existuje spousta dalších možností:

python do_this_first.py &
python do_this_second.py &
python do_this_last.py &

Bash je sekvenční. Na začátku bude interpretován soubor do_this_first.py. Poté, co python dokončí jeho provádění, je ovládací prvek znovu přenesen do bash. Bash zase spustí python do_this_second.py a tak dále..
Takže v podstatě do_this_first začíná a končí, do_this_second začíná a končí a pak do_this_last začíná a končí.


Jak řekl slhck, následující je jedna z možností.

python do_this_first.py && python do_this_second.py && python do_this_last.py

Nebo můžete nastavit -e, které se okamžitě ukončí, pokud řádek vrátí kód chyby.

#!/bin/bash

# Exit immediately if a command exits with a non-zero status.
set -e

python do_this_first.py 
python do_this_second.py
python do_this_last.py

Pro mě je tento poslední čitelnější.


Linux
  1. Jak spouštět skripty Pythonu ze shellu

  2. Spusťte textový soubor jako příkazy v Bash

  3. Spustit bash skript z jiného skriptu bez čekání na dokončení skriptu?

  1. Jak opakovaně spouštět bash skript každých N sekund?

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

  3. Po přihlášení spusťte bash skript

  1. Jak spustit příkazy bash Linuxu ve skriptu PERL?

  2. Paralelní spuštění skriptu shellu

  3. Jak zabít python skript pomocí bash skriptu