Wie kann man feststellen, ob auf einem Bildschirm Jobs ausgeführt werden, ohne eine Verbindung zu ihm herzustellen?

Wie kann man feststellen, ob auf einem Bildschirm Jobs ausgeführt werden, ohne eine Verbindung zu ihm herzustellen?

Ich habe ein zshSkript 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 jobist 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 pstreein 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).

verwandte Informationen