bash - wiederholen - unix befehle




Können Bash-Befehle vor dem Ergebnis des vorherigen Befehls fortgesetzt werden? (4)

Fügen Sie am Ende eines Befehls '&' ein, um ihn parallel auszuführen. Es ist jedoch merkwürdig, weil in Ihrem Fall der zweite Befehl vom Endergebnis des ersten Befehls abhängt. Verwenden Sie entweder sequentielle Befehle, oder kopieren Sie von hier aus nach b und c:

cp /tmp/a /tmp/b &
cp /tmp/a /tmp/c &

Wartet bash beim Ausführen von Befehlen aus einem Bash-Skript immer, bis der vorherige Befehl abgeschlossen ist, oder startet er den Befehl einfach und geht dann zum nächsten über?

Dh: Wenn Sie die folgenden zwei Befehle von einem Bash-Skript aus ausführen, können möglicherweise Fehler auftreten?

cp /tmp/a /tmp/b
cp /tmp/b /tmp/c


Ja, wenn Sie nichts anderes tun, werden die Befehle in einem Bash-Skript serialisiert. Sie können bash anweisen, eine Reihe von Befehlen parallel auszuführen und dann zu warten, bis alle beendet sind.

command1 &
command2 &
command3 &
wait

Die Et-Zeichen am Ende der ersten drei Zeilen weisen bash an, den Befehl im Hintergrund auszuführen. Der vierte Befehl, wait , weist bash an, zu warten, bis alle untergeordneten Prozesse beendet sind.

Beachten Sie, dass Sie auf diese Weise den Beendigungsstatus der untergeordneten Befehle nicht set -e können (und set -e nicht funktioniert). Sie können also nicht feststellen, ob sie erfolgreich waren oder nicht normaler Weg.

Das Bash-Handbuch enthält mehr Informationen (etwa zwei Drittel des Weges nach unten).


Sie warten, bis der vorherige fertig ist. Sie können jedoch 2 Skripts schreiben und in separaten Prozessen ausführen, sodass sie gleichzeitig ausgeführt werden können. Es ist wirklich eine wilde Vermutung, aber ich denke, Sie erhalten einen Zugriffsfehler, wenn ein Prozess versucht, in eine Datei zu schreiben, die von einem anderen Prozess gelesen wird.





bash