So führen Sie mehrere Befehle in Bash aus, einige davon im Hintergrund

So führen Sie mehrere Befehle in Bash aus, einige davon im Hintergrund

Ich möchte mehrere Befehle in Bash ausführen, einige davon aber im Hintergrund ausführen lassen. Am besten lässt sich das anhand des folgenden Befehls erklären, der jedoch nicht funktioniert ...

for@barpc:~> (sleep 30;command1;command2 param ) & ; anotherCommand

Ich denke, man könnte das als zwei Fragen auffassen:

  1. Wie beendet man das & in einem Befehl?
  2. Was wäre ein besserer Weg, dies zu erreichen?

Weitere Details, falls wichtig:

  • OpenSUSE 13.2
  • Gnome-Shell

Antwort1

Du solltest es versuchen

(sleep 5; ls) &  echo "Now"

Dies funktioniert wie Sie es wünschen.

Antwort2

Sie müssen lediglich das ;. entfernen &, das selbst als Befehlstrennzeichen fungiert, daher ;ist das Hinzufügen danach ungültig.

(sleep 30; command1; command2 param ) & anotherCommand

(Die Leerzeichen nach Semikolons sind nicht erforderlich. Ich finde es so einfach lesbarer. Dies ist eine der wenigen Stellen, an denen Leerzeichen in der Shell-Syntax optional sind – an den meisten Stellen sind sie entweder erforderlich oder verboten.)

Bessere Vorgehensweisen hängen wirklich davon ab, was Sie genau tun möchten. Um bessere Vorschläge machen zu können, benötigen wir mehr Informationen.

verwandte Informationen