Um Befehle gleichzeitig auszuführen, können Sie das &
Befehlstrennzeichen verwenden.
~$ command1 & command2 & command3
Dies wird gestartet command1
und dann im Hintergrund ausgeführt. Das selbe mit command2
. Dann geht es command3
normal los.
Die Ausgabe aller Befehle wird unkenntlich gemacht. Wenn dies für Sie jedoch kein Problem darstellt, ist dies die Lösung.
Wenn Sie später einen separaten Blick auf die Ausgabe werfen möchten, können Sie die Ausgabe jedes Befehls weiterleiten tee
. Auf diese Weise können Sie eine Datei angeben, in die die Ausgabe gespiegelt werden soll.
~$ command1 | tee 1.log & command2 | tee 2.log & command3 | tee 3.log
Die Ausgabe wird wahrscheinlich sehr chaotisch sein. Um dem entgegenzuwirken, können Sie die Ausgabe jedes Befehls mit einem Präfix versehen sed
.
~$ echo 'Output of command 1' | sed -e 's/^/[Command1] /'
[Command1] Output of command 1
Wenn wir all das zusammenfassen, erhalten wir:
~$ command1 | tee 1.log | sed -e 's/^/[Command1] /' & command2 | tee 2.log | sed -e 's/^/[Command2] /' & command3 | tee 3.log | sed -e 's/^/[Command3] /'
[Command1] Starting command1
[Command2] Starting command2
[Command1] Finished
[Command3] Starting command3
Dies ist eine sehr idealisierte Version dessen, was Sie wahrscheinlich sehen werden. Aber es ist das Beste, was mir derzeit einfällt.
Wenn Sie alle auf einmal stoppen möchten, können Sie das eingebaute Programm verwenden trap
.
~$ trap 'kill %1; kill %2' SIGINT
~$ command1 & command2 & command3
Dies wird ausgeführt , command1
und command2
im Hintergrund und command3
im Vordergrund, mit dem Sie es mit läßt töten Ctrl+ C.
Wenn Sie den letzten Vorgang mit töten Ctrl+ Cdie kill %1; kill %2
Befehle ausgeführt werden , weil wir ihre Ausführung im Zusammenhang mit der Aufnahme eines INTERUPT Signal, das Ding durch Drücken geschickt Ctrl+ C.
Sie beenden jeweils den 1. und 2. Hintergrundprozess (Ihr command1
und command2
). Vergessen Sie nicht, die Falle zu entfernen, nachdem Sie Ihre Befehle mit beendet haben trap - SIGINT
.
Schließe das Monster eines Befehls ab:
~$ trap 'kill %1; kill %2' SIGINT
~$ command1 | tee 1.log | sed -e 's/^/[Command1] /' & command2 | tee 2.log | sed -e 's/^/[Command2] /' & command3 | tee 3.log | sed -e 's/^/[Command3] /'
Sie könnten natürlich auch einen Blick auf den Bildschirm werfen . Damit können Sie Ihre Konsole in beliebig viele separate Konsolen aufteilen. So können Sie alle Befehle einzeln, aber gleichzeitig überwachen.