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:
#start the server
ls -la
Führen Sie dann den Bildschirm mit bash aus und initialisieren Sie ihn mit der Datei startserver1:
screen bash --init-file 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.
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.