Jak mogę napisać ekran GNU, aby zacząć od uruchomionego w nim programu, aby nie opuszczał sesji po zakończeniu programu?Jak mogę napisać ekran GNU, aby zacząć od uruchomionego w nim programu, aby nie opuszczał sesji po zakończeniu programu?
Chcę uruchomić interaktywny program jako demon, jeśli ręcznie uruchomię ekran, a następnie uruchomę ten program, wszystko działa tak, jak chcę. Jeśli program wyjdzie lub ulegnie awarii, sesja ekranowa pozostanie i będę mógł go obejrzeć, aby zobaczyć, co się stało. Jeśli jednak uruchomię program za pomocą prostego uruchomienia ekranu, uruchomi się on na ekranie, ale kiedy program wyjdzie, sesja ekranu się skończy i wszelkie dane wyjściowe z programu zostaną utracone.
Tak screen –dmS serverName serverApplication
nie działa w moim scenariuszu. Pomyślałem o zrobieniu skryptu, który uruchamia program, który chcę uruchomić & następnie śpi na zawsze, mógłbym wtedy uruchomić skrypt w tym samym czasie co ekran i powinien uzyskać efekt, na którym jestem, ale wydaje się raczej nieporządnym sposobem robienia rzeczy i jestem pewien, że musi być coś bardziej eleganckiego.
Przeczytałem sporo samouczków ekranowych i prześlizgnąłem się przez stronę podręcznika, ale nic nie wyskoczyło na mnie jak na właściwą drogę. Zrobiłem -X, ale to jest dla poleceń ekranowych, nie dla uruchamiania poleceń w trakcie sesji screen ... Wszelkie sugestie będą bardzo doceniane; Cieszę się nawet, że mogę użyć czegoś innego niż GNU Screen, jeśli jest lepsze narzędzie do wykorzystania w skryptach, ale proszę podać mi przykład, gdzie to możliwe.
(Side note: Dwie rzeczy będę uruchomione z tym są minecraft_server i mythtv_backend Mój plan był, aby uruchomić je z pracy Kron w bagażniku przez jakiegoś Ruby/skryptu bash).
Jeśli działa parametr -p, będzie świetnie! Wypróbuję to później. Znalazłem kilka szczegółów na stronie programistycznej https://savannah.gnu.org/bugs/index.php?10074, które pokazują, że jest to od dawna występujący błąd na ekranie, jest on poprawiony w nowej wersji, ale to nie jest gotowe jeszcze :-( – TafT
Po prostu wypróbowałem to w prostym przypadku, a polecenie screen stuff nie jest wymagane, exec będzie działał poprawnie z parametrem -p 0 i oznacza, że nie widzę $ (printf \\ r), aby uzyskać skrypt do wykonania: '$ screen -dmS" nazwa_serwera " $ screen -S" nazwa_serwera "-p 0 -X exec severApplication' – TafT
Świetnie!Dobrze jest usłyszeć inną metodę. exec jest zdecydowanie łatwy do zapamiętania niż $ (printf \\ r)! :) – Eric