GNU-Bildschirm beendet - sigterm zum laufenden Prozess

2

Ich möchte die quitSitzung überprüfen. Dafür benutze ich screen -S session_name -X quit. Das funktioniert gut, aber nicht so, wie ich es tun würde.

Das Programm, in dem ausgeführt wird, screenhat einen Handler für SIGTERM, und ich brauche diesen Handler wirklich zum Ausführen, damit es eine ordnungsgemäße Bereinigung durchführen kann. Das Ausführen screen -S session_name -X quitführt jedoch dazu, dass das Programm beendet wird, ohne dass sein Handler aufgerufen wird.

Ein einfaches kill $(pidof bla) Ergebnis ist der Aufruf meines Handlers, die ordnungsgemäße Reinigung und schließlich das Schließen der screenSitzung.

Ich möchte jedoch in der Lage sein, all dies zu stoppen, indem ich die screenSitzung mit ihrem Sitzungsnamen schließe und das SIGTERMSignal "weiterleiten" lasse .

Jede Hilfe dankbar, danke.

Xaqq
quelle
1
Ich sehe keinen anderen Weg als ein Skript, das den Prozessbaum liest, der vom Originalbildschirm erzeugt wurde (Sitzung sollte mit PID übereinstimmen) und SIGTERM an alle Prozesse sendet, die mit Blättern beginnen. Senden Sie am Ende des Skripts einfach den Befehl zum Beenden des Bildschirms.
Mveroone

Antworten:

2

Die Lösung, mit der ich gekommen bin, ist von der von @Kwaio vorgeschlagenen inspiriert. In meinem Fall habe ich nur einen Prozess, der daran interessiert ist, das SIGTERMSignal zu empfangen . Dieser Prozess leitet es bereits an seine Kinder weiter.

Dies setzt voraus, dass es nur eine screenSitzung mit einem bestimmten Namen gibt.

kill $(ps h --ppid $(screen -ls | grep session_name | cut -d. -f1) -o pid)
Xaqq
quelle