Ich möchte eine Anwendung innerhalb einer Bildschirmsitzung starten, jedoch über ein Skript.
Ohne Skript würde ich einfach den Bildschirm starten, dann N Fenster mit crtl-ac öffnen und Programme in jedem Fenster ausführen.
Ich habe folgendes versucht
screen -d -m -S test
screen -S test -X exec tail -f /var/log/messages
screen -S test -X screen
screen -S test -X exec tail -f /var/log/xinetd.log
Aber wenn ich anhänge, läuft der Sitzungsende nicht. Wenn ich die Sitzung direkt danach anhänge screen -d -m -S startup
und screen -S startup -X exec tail -f /var/log/messages
von einem anderen Terminal aus starte, funktioniert sie.
Habe ich etwas verpasst ?
Bearbeiten nach AlexD Antwort:
Eine halb funktionierende Lösung ist
screen -d -m -S test tail -f /var/log/messages
screen -S test -X screen tail -f /var/log/xinetd.log
Das Verketten des Bildschirmbefehls (der nach -X) mit dem Befehl funktioniert, während exec wahrscheinlich nicht, weil exec erwartet, dass ein aktuelles Fenster definiert wird, während es kein aktuelles gibt, wenn der Bildschirm getrennt wird. Vielen Dank an AlexD für diese Tipps.
Aber es gibt einen seltsamen Nebeneffekt: Wenn das Programm stoppt (wenn Sie die Bildschirmsitzung anhängen und den Schwanz drücken oder den Schwanz drücken oder schließen), wird das Bildschirmfenster geschlossen.
Das Verhalten ist also nicht dasselbe wie bei Crtl-A c und führt den Befehl aus.
Ein weiterer Nebeneffekt ist, dass Sie keine 2 Befehle verketten können
screen
Beendet immer , wenn der Befehl, mit dem gestartet wurde, endet - dies ist eine normale Funktion des Tools :) ..so wenn Sie ausführenscreen top
, wenn Sie beendentop
,screen
wird auch beendet