GNU/Linux >> Znalost Linux >  >> Linux

Jak spustit příkaz po dokončení již běžícího, existujícího?

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

Linux
  1. Jak spustíme příkaz uložený v proměnné?

  2. Jak spustit příkaz uvnitř spuštěného kontejneru Systemd?

  3. Jak spustit příkaz na spuštěném kontejneru Docker

  1. Jak opravit problém „Firefox již běží“ v systému Linux

  2. Jak zajistit, aby program běžel i po odhlášení z ssh?

  3. Jak zkontrolovat, zda ssh-agent již běží v bash?

  1. Jak spustit příkaz jako správce systému (root)?

  2. Jak integrovat příkaz MV po příkazu Najít?

  3. Jak mohu správně spouštět skripty příkazového řádku Perl one-liner?