Chciałbym uruchomić aplikację w sesji ekranowej, ale ze skryptu.
Bez skryptu po prostu uruchomiłem ekran, a następnie otworzyłem N okien za pomocą crtl-ac i uruchomiłem programy w każdym oknie.
Próbowałem następujące
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
Ale kiedy dołączam, ogon sesji nie działa. Jeśli dołączę sesję zaraz po tym screen -d -m -S startup
i uruchomię screen -S startup -X exec tail -f /var/log/messages
z innego terminala, to zadziała.
Przegapiłem coś ?
Edytuj po odpowiedzi AlexD:
Połowa działającego rozwiązania to
screen -d -m -S test tail -f /var/log/messages
screen -S test -X screen tail -f /var/log/xinetd.log
Łańcuchowe polecenie ekranowe (następne po -X) z poleceniem działa, gdy exec nie jest prawdopodobne, ponieważ exec oczekuje, że zostanie zdefiniowane bieżące okno, podczas gdy okno nie będzie obecne po odłączeniu ekranu. Dzięki AlexD za te wskazówki.
Ale jest dziwny efekt uboczny: kiedy program się zatrzyma (jeśli załączysz sesję ekranową i crtl-c ogonem lub zabijesz ogon) okno ekranu się zamknie.
Więc zachowanie nie jest takie samo jak Crtl-A c i uruchomienie polecenia
Kolejnym efektem ubocznym jest to, że nie można połączyć 2 poleceń
screen
zawsze kończy się, gdy kończy się polecenie, z którym zostało uruchomione - jest to normalna funkcja narzędzia :) .. więc jeśli uruchomiszscreen top
, kiedy wyjdziesztop
,screen
również się zakończy