Das Handbuch zum GNU-Bildschirm lautet:
Wenn ein Programm beendet wird, wird
screen
(standardmäßig) das Fenster geschlossen, in dem es enthalten ist.
Das (per default)
schlägt vor, dass Sie diese Option ändern können, damit ein Programm, das beendet wird, das Fenster, in dem es sich befindet, nicht beendet. Wie ändere ich dieses Verhalten?
bash
gnu-screen
Dan
quelle
quelle
bash
, müssen Sie sich bewusst sein, dass Ihre Shell auch ein Programm ist, das Sie separat benötigenexit
. Dies ist vor allem dann relevant, wenn Sie ein Programm direkt auf einem Bildschirm ohne Shell ausführen.Antworten:
versuchen Sie es mit
zombie
oderdefzombie
. Ich verwende die folgenden Einstellungen.quelle
r
automatisch wäre ...Ich würde vorschlagen, den Bildschirm zuerst mit einer "Shell" zu starten und Ihren Befehl auszuführen, damit Sie nach Abschluss des Vorgangs zu Ihrer Shell im Bildschirm zurückkehren und die Ausgabe Ihres Befehls sehen können. (Möglicherweise möchten Sie die Autologout-Funktion der Shell deaktivieren, um zu vermeiden, dass sie nach einiger Zeit geschlossen wird.)
Andernfalls habe ich die Manpage des Bildschirms erneut gelesen und kann keine andere Option finden, um ein Fenster offen zu halten, nachdem sein Hauptbefehl beendet wurde.
quelle
Ein
screen
Fenster wird beendet, wenn das von ihm ausgeführte Programm beendet wird. Dies liegt daran, dass der Bildschirm selbst keine Shell ist. Sobald das Programm beendet ist, kann mit dem Fenster nichts mehr getan werden. Sie können kein neues Programm starten, da unter dieser Terminalsitzung nichts mehr übrig ist, was ein Programm starten könnte.Ein neu erstelltes Bildschirmfenster führt standardmäßig bash aus (oder was auch immer Ihre nominierte Shell ist). Da bash eine Shell ist, können Sie eine beliebige Anzahl von Programmen starten, und wenn sie beendet werden, kehren sie zu bash zurück. Dann kann ein anderes Programm gestartet werden. Ein Fenster, in dem bash ausgeführt wird, verhält sich also so, wie Sie es beschreiben. Erst wenn bash selbst beendet wird, wird das Fenster geschlossen.
Beachten Sie, dass dies dasselbe Verhalten wie bei jeder Terminalsitzung ist. Nach dem Beenden des letzten Programms endet die Terminalsitzung (bei einem normalen Terminal wird diese Sitzung erneut gestartet, wenn sie von init festgelegt wurde, und es wird ein Anmeldebildschirm angezeigt).
Dies ist ein bisschen hackig, aber normalerweise, wenn Sie den Bildschirm mit einem Befehl starten, beendet der Befehl, der ausgeführt wird, das Fenster. Wenn Sie bash jedoch auch mit dem Befehl mit der
-c
Option starten , wird bash auch beendet, sobald der Befehl beendet wird.Wenn wir also möchten, dass bash einen Befehl ausführt, aber am Ende des Befehls bleibt, müssen wir den Befehl als Teil des bash-Initilisierungsprozesses ausführen.
Wenn Sie beispielsweise eine neue Datei "startserver1" erstellen, die die zum Starten des Servers erforderlichen Befehle enthält:
Führen Sie dann den Bildschirm mit bash aus und initialisieren Sie ihn mit der Datei startserver1:
Dies ruft den Bildschirm auf, startet Bash und initialisiert Bash mit Ihrem Server-Startskript. Sobald der Server beendet ist, befinden Sie sich in der Bash-Sitzung im Bildschirmfenster.
quelle