Muszę zapisać całe wyjście Screen do pliku, aby później sprawdzić całą zawartość.
Powodem jest to, że zrzucam pamięć flash przez port szeregowy, używając Screen do połączenia z nią. Chciałbym zapisać go do pliku, aby sprawdzić strukturę pamięci.
Próbowałem:
$: screen /dev/ttyUSB0 115200 >> foo.txt
$: screen /dev/ttyUSB0 115200 | tee foo.txt
Próbowałem też użyć pliku bufora z ekranu, ale nie rozumiem, jak go używać.
Czy jest łatwy sposób?
logging
buffer
dump
gnu-screen
Edoardoo
źródło
źródło
Odpowiedzi:
Istnieje opcja wiersza poleceń do logowania. Dane wyjściowe są zapisywane w pliku screenlog.n, gdzie n to numer ekranu. Ze stron podręcznika ekranowego:
źródło
find / -name "screen*log"
który nic nie znalazł.Możesz także użyć Control-a + H, aby zapisać dane logowania do pliku screenlog.n. Jeszcze jedno Control-a + H, aby wyłączyć.
Ca H: Rozpoczyna / kończy rejestrowanie bieżącego okna do pliku „screenlog.n”.
źródło
a
+:
i wpisz na przykładchdir /home/foobar/baz
Wybrana odpowiedź nie działa dobrze w przypadku wielu sesji i nie pozwala na określenie niestandardowej nazwy pliku dziennika.
Oto moja formuła dla sesji z wieloma ekranami:
Utwórz plik konfiguracyjny dla każdego procesu:
Jeśli chcesz to zrobić „w locie”, możesz zmienić
logfile
automatycznie.\012
oznacza „nowy wiersz”, ponieważ użycie\n
spowoduje wydrukowanie go w pliku dziennika: źródło .Uruchom polecenie z flagami „-c” i „-L”:
Otóż to. Po pierwszym rzucie zobaczysz „test.log”:
Zauważyłem, że "-L" jest nadal wymagane, nawet jeśli w pliku konfiguracyjnym znajduje się "logowanie".
Nie mogłem znaleźć listy zmiennych formatu czasu (takich jak% m) używanych przez ekran. Jeśli masz link w tych formatach, prześlij go poniżej.
Dodatkowy
Jeśli chcesz to zrobić „w locie”, możesz użyć tego skryptu:
Aby z niego skorzystać, zapisz go (screen.sh) i ustaw + x uprawnienia:
... i wykona ./test.pl i utworzy plik dziennika w /var/log/TEST.log
źródło
on-the-fly
część jest super przydatna.screen -r
with"Unable to open "/tmp/log.conf"
. Ponadto ekran przeszedł ze[detached]
stanu do nieistnienia. Co mogło być problemem?screen bash
. Jeśli jakikolwiek inny proces zabija Twój ekran, powinien być wymieniony jako „martwy”, ale nie powinien znikać. Nie wiem, co to może być.Następujące polecenie działa dla wersji Screen 4.06.02:
Ze strony podręcznika Screen :
Możesz sprawdzić istniejącą wersję Screen za pomocą screen -version . Możesz pobrać i zainstalować najnowszą wersję Screen ze strony https://www.gnu.org/software/screen/ .
źródło
W przypadku terminala Mac:
Detale
script
: Wbudowana aplikacja do „tworzenia maszynopisu sesji terminala”-a
: Dołącz do pliku wyjściowego-t 0
: Czas między zapisem do pliku wyjściowego wynosi 0 sekund, więc plik out.txt jest aktualizowany po każdym nowym znakuout.txt
: To tylko nazwa pliku wyjściowegoscreen /dev/ttyUSB0 115200
: Polecenie z pytania dotyczące połączenia z urządzeniem zewnętrznymNastępnie możesz użyć tail, aby zobaczyć, że plik jest aktualizowany.
źródło
Ctrl+Ato Shift+Hdziała dla mnie. Możesz przeglądać plik,
screenlog.0
gdy program jest nadal uruchomiony.źródło
Polecenie „script” w systemie Unix powinno załatwić sprawę. Po prostu uruchom go na początku nowej konsoli i powinno być dobrze.
źródło
Oto sztuczka: zawiń to
sh -c
!Gdzie
2>&1
przekierowuje stderr na stdout, dzięki czemutee
można przechwytywać i rejestrować komunikaty o błędach.źródło
Poniższe mogą być przydatne (testowane na: Linux / Ubuntu 12.04 (Precise Pangolin)):
Korzystając z powyższego, możesz następnie wykonać wszystkie potrzebne zmiany wskazówek. Na przykład, aby zrzucić dane wyjściowe do konsoli podczas zapisywania do pliku, wykonaj następujące czynności:
źródło
Inna odpowiedź, jeśli chcesz zapisać wynik całego bufora przewijania z już aktywnie działającego ekranu:
Spowoduje to zapisanie całego bufora do / tmp / screen-exchange
źródło
Istniejący dziennik ekranu można zapisać przez:
Ctrl+A : hardcopy -h nazwa_pliku
źródło