Mam screen
uruchomioną instancję i musiałbym wykonać część kodu wewnątrz screen
i pobrać wynik do mojego skryptu.
Pierwsza część jest dość łatwa screen -S session_name -X eval 'stuff "$cmd"\015'
.
(Zmieniłem wiersz znaleziony w skrypcie )
Druga część, polegająca na wydostaniu się z produkcji, jest trudniejsza. Jak mogę uzyskać cały wynik, niezależnie od jego wielkości?
bash
logs
gnu-screen
recording
1 miejsce
źródło
źródło
screen -X stuff …
; pytanie podobne do twojego .stuff
, i właśnie to miałem problem ze zrozumieniem.Odpowiedzi:
Możesz zacząć
screen
od-L
opcji. Spowoduje to, że screen utworzy plikscreenlog.n
(część n jest numeryczna, zaczynając od zera) w bieżącym katalogu roboczym.W twoim przypadku wyglądałoby to tak:
screen -S session_name -L -X eval 'stuff "$cmd"\015'
Tak długo, jak pamiętasz, aby posprzątać później, powinno to pasować do tego, czego szukasz.
W przypadku ostatniego wiersza dziennika można go łatwo uzyskać za pomocą
tail -1 screenlog.0
lub cały dziennik można przeanalizować w dowolny sposób.źródło
screen
polecenie, które wydałem, to po prostu wysłanie polecenia. Aby rozpocząćscreen
, użyłemscreen -dmS name program
;-)Jeszcze jeden niuans, który może być pomocny w przyszłości: jeśli jesteś w sesji ekranowej, możesz interaktywnie poprosić o utworzenie pliku dziennika. Naciśnij ctrl- a H(Control-A, a następnie duże H), aby poprosić screen o rozpoczęcie zrzutu dowolnego okna w pliku dziennika.
źródło
man screen
mówi: muszę wpisać CA H, bez kontroli tylko dla H. Sad, że to nie przechwytuje poprzedniego dziennika.