Více příkazů můžete oddělit pomocí ;
, takže se spouštějí postupně, například:
really_long_script.sh ; echo Finished
Pokud si přejete spustit další program pouze v případě, že skript skončil s návratovým kódem 0 (což obvykle znamená, že se provedl správně), pak:
really_long_script.sh && echo OK
Pokud chcete opak (tj. pokračovat pouze v případě, že aktuální příkaz selhal), pak:
really_long_script.sh || echo FAILED
Svůj skript můžete spouštět na pozadí (ale pozor, výstup skriptů (stdout
a stderr
) bude nadále přecházet na váš terminál, pokud jej někam nepřesměrujete), a poté wait
za to:
really_long_script.sh &
dosomethingelse
wait; echo Finished
Pokud jste již skript spustili, můžete jej pozastavit pomocí Ctrl-Z
a poté proveďte něco jako:
fg ; echo Finished
Kde fg
přenese pozastavený proces do popředí (bg
by to běželo na pozadí, skoro jako by to začínalo &
)
Můžete také použít ovládání úlohy bash. Pokud jste začali
$ really_long_script.sh
poté jej pozastavíte stisknutím ctrl+z:
^Z
[1]+ Stopped really_long_script.sh
$ bg
restartujte úlohu na pozadí (stejně jako byste ji spustili s really_long_script.sh &
). Pak můžete počkat na tuto úlohu na pozadí s
$ wait N && echo "Successfully completed"
kde N je ID úlohy (pravděpodobně 1, pokud jste nespouštěli žádné jiné úlohy na pozadí), které se také zobrazuje jako [1]
výše.
Pokud proces na aktuálním tty neběží, zkuste toto:
watch -g ps -opid -p <pid>; mycommand