Haben bash-Skript ausführen mehrerer Programme, die als separate Prozesse
Wie der Titel schon sagt, wie Schreibe ich ein bash-Skript, dass ausgeführt wird, zum Beispiel 3 verschiedene Python-Programme als separate Prozesse? Und dann bin ich in der Lage, Zugriff auf jeder dieser Prozesse, um zu sehen, was aufgezeichnet wird auf dem terminal?
Edit: nochmals vielen Dank. Ich vergaß zu erwähnen, dass ich bewusst bin, Anhängen &
aber ich bin mir nicht sicher, wie der Zugriff, was wird ausgegeben, um das terminal für jeden Vorgang. Zum Beispiel konnte ich alle 3 dieser Programme separat auf verschiedenen Registerkarten und in der Lage sein zu sehen, was wird ausgegeben.
InformationsquelleAutor Petesta | 2013-08-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie einen job ausführen in den hintergrund wie diese:
Dieser können Sie mehrere Aufträge in einer Zeile, ohne zu warten, bis die Vorherige fertig zu stellen.
Starten wenn Sie mehrere hintergrund-jobs wie diese, Sie alle teilen die gleiche
stdout
(undstderr
), was bedeutet, dass Ihre Ausgabe ist wahrscheinlich interleaved. Nehmen wir zum Beispiel das folgende Skript:Starten Sie es zweimal in den hintergrund:
Und was sehen Sie in Ihrem terminal wird in etwa so Aussehen:
Könnte aber auch so Aussehen:
Werden Sie wahrscheinlich nicht wollen, denn es wäre sehr schwierig, herauszufinden, die Ausgabe gehörte zu dem job. Die Lösung ist? Redirect
stdout
(und Optionalstderr
) für jeden Auftrag eine separate Datei. Zum Beispielleitet nur
stdout
undleitet beide
stdout
undstderr
fürcommand
zufile
während der Ausführungcommand
im hintergrund. Auf dieser Seite hat eine gute Einführung, um die Umleitung in der Bash. Sie können den Befehl "live" vontail
ing die Datei:Ich würde empfehlen, Laufenden hintergrund-jobs mit nohup oder Bildschirm als user2676075 erwähnt, lassen Sie Ihre Aufträge laufen nach dem schließen des terminal-session, z.B.
InformationsquelleAutor ThisSuitIsBlackNot
Probieren Sie etwas wie:
Dann können Sie Schwanz die Dateien als Befehle ausgeführt. Denken Sie daran, Sie können Rute Sie alle, indem Sie in das Verzeichnis und machen einen "Schwanz *.log"
Alternativ können Sie setup ein Skript zu generieren, die einen Bildschirm für jeden Befehl mit:
Dann wieder anschließen, um Sie später mit Bildschirm-Liste und mit screen-r [Display name]
Genießen
InformationsquelleAutor Alex Atkinson
Andere Möglichkeit ist die Verwendung eines terminal-emulator laufen die drei Prozesse. Könnten Sie xterm (oder rxvt, etc.) wenn Sie mit X.
Hängt davon ab, was Sie wollen. Dieser Ansatz ermöglicht es Ihnen, pop-up das terminal-Fenster, so können Sie die Ausgabe in Echtzeit. Sie können auch kombinieren Sie es mit der Umleitung speichern Sie die Ausgabe als gut.
InformationsquelleAutor Ziffusion