
Ich habe ein zsh
Skript geschrieben, das viele Bildschirmsitzungen startet und in jeder davon einen anderen Befehl ausführt. Wenn das Skript ausgeführt wird, sind insgesamt 72 Bildschirme vorhanden, daher job
ist die manuelle Überprüfung, ob eine fertig ist oder nicht, eine sehr zeitaufwändige Aufgabe. Kann ich ein separates Skript ausführen, das überprüft, ob in den Bildschirmsitzungen laufende Jobs vorhanden sind oder nicht, und die Sitzung beendet, wenn keine laufenden Jobs vorhanden sind? Haben Sie Ideen? Mir ist keine Methode eingefallen, mit der man zuverlässig überprüfen kann, was in allen Bildschirmsitzungen passiert ist. Vielen Dank im Voraus.
Antwort1
Ich könnte mir vorstellen, dass dieAusgabeprotokollierungFunktion des Bildschirms könnte Ihnen dabei helfen (siehe diemanpagefür Details). Sie können Ausgabeprotokolle Ihrer Sitzungen erstellen und diese überprüfen, um festzustellen, ob Ihre Jobs abgeschlossen sind.
Oder Sie könnten den Baum der laufenden Prozesse überprüfen (z. B. mithilfe von pstree
), um zu sehen, ob die Shells innerhalb der Bildschirmsitzungen noch laufende untergeordnete Prozesse haben oder nicht. Ich könnte mir jedoch vorstellen, dass das Parsen der Ausgabe pstree
in einem Skript mühsam und fehleranfällig ist, sodass Sie hierfür möglicherweise tatsächlich die Kernelschnittstellen verwenden möchten (um den Baum der laufenden Prozesse abzurufen).