Jak zapisać dane wyjściowe live-f1 w pliku

10

Otworzyłem terminal i uruchomiłem live-f1, który wyświetla transmisję na żywo w terminalu (tekst), który zmienia się co sekundę. Podczas działania tego programu można używać tylko klawisza „Enter” (wychodzi z tego programu). Nie możesz więc wpisywać niczego więcej w konsoli.

Chciałbym zapisać zawartość terminala do pliku, jak co sekundę.

Jak mogę to zrobić?

Otwierając 2. konsolę i używając komendy?

Nie można go uruchomić z poleceniem setterm -dump.

Gustav
źródło

Odpowiedzi:

8

live-f1przerysowuje ekran z nowymi danymi za pomocą znaków sterujących terminalu (ncurses), podobnie jak toplub mtr. Dlatego widzisz te wszystkie śmieci podczas przekierowywania do pliku lub urządzenia nie terminalowego.

Niestety live-f1nie zapewnia opcji uzyskania danych wyjściowych w celu zapisania, a następnie wyodrębnienia danych do statystyk itp . Jeśli nadal chcesz zapisać wyniki do późniejszego odtworzenia, możesz użyć script.

Spowoduje to nagranie live-f1 i utworzenie dwóch plików, maszynopisu i pliku czasowego.

script -c live-f1 -t 2> timingfile

Spowoduje to odtworzenie wyniku

scriptreplay timingfile
forcefsck
źródło
7

Istnieje kilka sposobów przechwytywania danych wyjściowych do pliku, które mogą Ci się przydać.

script

To tworzy podpowłokę i umieszcza w niej wszystkie dane wyjściowe. Więc zrób to script, co chcesz, a następnie, exitaby zakończyć podpowłokę, a wyniki będą w pliku o nazwie „maszynopis”

tee

Możesz wysłać echo całej potoku do innego miejsca. Możesz więc teewyłączyć standardowe wyjście w pliku:

$ mycommand | tee myoutput

Jeśli musisz również uchwycić błąd standardowy, przekieruj go:

$ mycommand 2>&1 | tee myoutput
rozgwiazdy
źródło
6

Co powiesz na uruchomienie takiego programu:

program > /path/to/file

To przekierowuje wyjście programdo /path/to/filenatychmiast.

A jeśli chcesz mieć dane wyjściowe w terminalu, a także zapisać je w pliku. Sprawdź Czy jest jakiś sposób w bash, aby przekierować wyjście i nadal mieć go na standardowym wyjściu?

phunehehe
źródło
Dziękuję za szybką odpowiedź. To prawie działa, tylko zawartość pliku jest nieco zniekształcona. Powinien być w formacie HTML, ale zamiast tego, kiedy otwieram plik, pojawiają się dziwne symbole, zobacz zrzut ekranu: upload.ee/image/1223166/ss_01.png . Nazwa programu to live-f1.
Gustav
To wygląda zabawnie. Czy jesteś pewien, że program wyświetla tylko HTML? Czy jest jakaś animacja czy coś dziwnego?
phunehehe
To przekieruje tylko standardowe wyjście. Czy wymagany jest również błąd standardowy?
Faheem Mitha
2
@Gustav Są tam także kody ANSI . Albo aplikacja generuje jakiś licznik postępu (jak to wygląda), albo koloruje dane wyjściowe lub podobne. Jeśli istnieje jakiś sposób, aby to wyłączyć, musisz użyć go, aby przechwycić czyste wyjście. Twoja aplikacja nie generuje HTML, więc aby przechwycić HTML, potrzebujesz innej aplikacji do przetłumaczenia wyniku.
Matthew Scharley
Dlaczego korzystam z HTML, ponieważ dostałem go rok temu, ale sformatowałem ponownie dysk, na którym miałem działające środowisko. Moim celem jest przeniesienie pozycji kierowców Formuły 1 z kanału live-f1 do pliku. Pracowałem w zeszłym roku, uruchamiając program live-f1 na 1. terminalu, a następnie uruchamiając 2. terminal i używając komendy, która uchwyciła ekran 1. terminala i zapisała go do pliku (kopia z zeszłorocznego pliku: upload.ee/download/1223347 /0b6545ce227661452c8/html.log ). Komenda wyglądała mniej więcej tak: tty „1-ty terminal wskaźnik” „nazwa pliku” „interwał”
Gustav
3

Można używać GNU Screen , wraz z jego funkcjonalnością logowania . Zauważ też, że to logfile flush secspolecenie pozwala kontrolować, jak często dane wyjściowe są opróżniane na dysk. Z ekranu Instrukcja użytkownika:

- Polecenie: logfile flush secs

Określa nazwę, którą otrzymają pliki dziennika. Domyślnie jest to „screenlog.% N”. Druga forma zmienia liczbę sekund, które ekran będzie czekał przed opróżnieniem bufora pliku dziennika do systemu plików. Wartość domyślna to 10 sekund.

Faheem Mitha
źródło
Przyjrzę się temu.
Gustav