Jak mogę uzyskać pod powłoką UNIX podobny efekt do watch
polecenia, ale ze stronicowaniem, aby móc przewijać dane wyjściowe, jeśli zajmie to więcej niż jeden ekran?
Innymi słowy, chcę program, który jest do watch
tego, co less
jest cat
.
Jako przykład, powiedzmy, że chciałem obejrzeć wynik qstat
, którego mógłbym użyć
watch qstat
aby obejrzeć wyjście qstat, ale to pokazuje tylko pierwszy screen.
W wersji stronicowania watch
, byłbym w stanie poruszać się w danych wyjściowych, ponieważ są one ciągle aktualizowane przez watch
. Czy w tej chwili można to zrobić za pomocą istniejących narzędzi?
less
po co korzystać, kiedy można po prostu użyćcat
i większe okno?Odpowiedzi:
Zamiast modyfikować polecenie „obserwuj”, użyj screena!
Załóżmy na przykład, że musisz widzieć 300 linii wysokości i 100 znaków szerokości i poruszać się po tym. Po uruchomieniu ekranu wymuś rozmiar w ten sposób:
Teraz uruchom polecenie zegarka. Następnie można użyć
C-a <ESC>
do przewijania strony wyświetlacza.Niestety ekran nie jest odświeżany w trybie kopiowania. Ale jeśli chcesz dostosować sekcję okna, które przeglądasz, najłatwiejszym sposobem może być ponowne uruchomienie poleceń wysokości / szerokości, ponieważ domyślnie terminal wyświetla prawą dolną część wirtualnego okna.
źródło
C-
to akactrl-
Możesz spróbować:
podczas gdy vmstat; śpij 1; zrobione | mniej
zamień vmstat na qstat i dostosuj tryb uśpienia do swoich potrzeb
źródło
less
, co oznacza, że musisz przewijać, aby zobaczyć najnowsze dane wyjściowe.Multitail: http://www.vanheusden.com/multitail/
Przykład:
Przewiń do tyłu, naciskając „b” i stronę / strzałkę w górę / w dół.
źródło
OK, miałem trochę czasu na
watchless
funkcję. Jest trochę szorstki i nie wydaje się jeszcze w pełni działać, ale oto:Musisz ręcznie użyć
R
klawisza w mniej, aby zaktualizować wyświetlacz.Wygląda na to, że działa dla,
watchless date
ale nie dlawatchless qstat
lubwatchless pstree
, i oba pokazują puste. Jakieś pomysły?źródło
mv
ten drugi plik do pliku odczytanegoless
jako asmv
atomowy. W przeciwnym razieless
mógłby pomyśleć, że plik zniknął, jeśli żądanie odświeżenia jest wymagane w tym samym czasie, w którym zapisywany jest plik"$@" > $out
. Przed uruchomieniem pętli powinieneś również zapisać plik wyjściowy.Nie widzę, jak można to zaimplementować, gdy zmienia się zawartość wiersza, i
watch
resetuje się z powrotem do pierwszej linii co 2 sekundy, nawet jeśli można przewinąć w dół.Niektóre obejścia:
watch 'qstat | tail -n40'
aby wyświetlić wyjście qstat zaczynające się od 40 linii od dołuwatch 'qstat | grep jsmith'
aby grepować dane wyjściowe, aby linie, którymi jesteś zainteresowany, były zawsze na pierwszym ekranie.Zauważ, że musisz umieścić polecenia wokół potoku w pojedynczych cudzysłowach - w przeciwnym razie będziesz przesyłać dane wyjściowe
watch
, a nie wyjścioweqstat
.źródło
Aby kontynuować odpowiedź enkrsa,
oglądać „qstat | głowa -300 | ogon -15 '
dostarczy ci dowolne strony do wyjścia qstat.
źródło
Oto dość prymitywny skrypt, który wydaje się działać dla kilku poleceń, które mu rzuciłem
Używany jako taki:
Będąc raczej pedantycznym, przejście między odświeżeniami nie jest tak płynne, jak bym tego chciał. Oczywiście, będąc prostym skryptem, nie obsługuje podświetlenia diff (watch -d). Ponadto parsowanie argumentów wejściowych można wykonać lepiej.
źródło
A może po prostu: tail -f
źródło
Implementuję prosty skrypt Pythona, aby spełnić to żądanie, o nazwie „watchall”
pobierz: pip install watchall
zamień zegarek na watchall i ciesz się przewijanym ekranem. teraz obsługuje tylko flagi -n i -d.
źródło
możesz spróbować:
wtedy w twoim pliku powinieneś zobaczyć wyjście dołączające (nie mam teraz prawa do Linuksa, żeby to przetestować)
źródło
file
tą samą wydajnością w kółko. Z pewnością nie odnosi się do pierwotnego pytania.