Jak monitorować postęp poleceń systemu Linux (z pv i postępem)

Zamiast latać na ślepo, użyj poleceń pv i postępu Linuksa, aby śledzić postęp polecenia. Te narzędzia zapewniają paski postępu dla poleceń, które normalnie ich nie mają. Zobaczysz też szacowany czas do zakończenia.

Jeśli lecisz długodystansowym samolotem bez ekranów wideo na oparciach siedzeń, nie jest łatwo określić, jak daleko jesteś w podróży. Wiesz, kiedy wystartowałeś. Wiesz, jak długo ma potrwać lot. Ale skąd wiesz, czy jesteś na dobrej drodze, na czas lub znacznie spóźniasz się? Jeśli nie chcesz oglądać filmu z lotu, zwykle możesz przełączyć ekran wideo, aby wyświetlić mapę z położeniem na niej Twojego samolotu. Otrzymujesz również statystyki, takie jak przewidywany czas przybycia (ETA), co jest świetne.

Uruchomienie polecenia z okna terminala może czasami przypominać lot długodystansowy bez ekranu wideo. Nie masz nic do wskazania, czy wszystko jest w porządku, czy proces się zawiesił, ani jak blisko jest ukończenia. Migający kursor nie zawiera zbyt wielu informacji.

Polecenia pv i postęp zapewniają statystyki i wizualną informację zwrotną. Możesz zobaczyć, jak blisko jest ukończenia tego procesu. Oznacza to, że otrzymujesz szacowany czas dotarcia do uruchomionych procesów. W porównaniu z wpatrywaniem się w kursor wygrywa.

Instalowanie pv

Musisz zainstalować pv.

Aby zainstalować pv na Ubuntu, użyj tego polecenia:

sudo apt-get install pv

sudo apt-get install pv w oknie terminala

Aby zainstalować pv w Fedorze, użyj tego polecenia:

sudo dnf install pv

sudo dnf install pv w oknie terminala

Aby zainstalować pv na Manjaro, użyj tego polecenia:

sudo pacman -Syu pv

sudo pacman -Syu pv w oknie terminala

Korzystanie z pv

pv oznacza przeglądarka rur. Rurociąg musi być gdzieś zaangażowany w polecenie. Oto przykład, w którym przepuszczamy obraz ISO przez zip, aby utworzyć skompresowany plik zip ISO.

Aby spowolnić polecenia na tyle, aby można było wykonać zrzut ekranu, niektóre pliki w przykładach użytych w tym artykule były przechowywane na starym, powolnym, zewnętrznym urządzeniu USB o nazwie SILVERXHD.

pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso | zip > gparted.zip

pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso |  zip> gparted.zip w oknie terminala ”width =” 646 ″ height = ”77 ″ onload =” pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this); ”  onerror = ”this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);”> </p>
<p> Informacje, które podaje nam pv, można zobaczyć w dolnej linii wyświetlacza. </p>
<p> <img ładowanie =

Od lewej do prawej wyświetlane są następujące informacje:

Dane przesłane do tej pory.
Czas minął daleko.
Szybkość przesyłania danych (przepustowość).
Pasek postępu i procent wykonania.
Szacowany czas pozostały do ​​zakończenia (ETA).

Kopiowanie pliku z pv

Aby skopiować plik z wyjściem z pv, użyj tego polecenia:

pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso > gparted.iso

pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso |  gparted.iso w oknie terminala

Otrzymujemy raport o postępie, gdy plik jest kopiowany.

kopiowanie pliku z pv w oknie terminala

Kopiowanie wielu plików za pomocą pv

Aby skopiować wiele plików i folderów za pomocą pv, musimy użyć małej sztuczki. Używamy tar do przenoszenia plików za nas.

tar -c help-files/ | pv | tar -x -C Documents/

tar -c help-files / |  pv |  tar -x -C Dokumenty / w oknie terminala

Tar -c help-files / część polecenia instruuje tar, aby utworzył (-c) archiwum plików w folderze help-files. Jest to przesyłane przez pv, dzięki czemu otrzymujemy wyświetlanie postępu. Następnie jest przesyłany z powrotem do tar na ostatnią część polecenia. Archiwum jest rozpakowywane (-x), a katalog jest zmieniany (-C) na Dokumenty przed rozpakowaniem.

Tak więc pliki i foldery znajdujące się w plikach pomocy są kopiowane do folderu Dokumenty z wyświetlaniem postępu.

kopiowanie plików z pv i tar w oknie terminala

Tym razem wydajność jest nieco inna.

Nie otrzymujemy ETA. Pasek postępu wyświetla teraz ruchomy wskaźnik. Pokazuje, że proces jest aktywny, ale nie rośnie od lewej do prawej jak tradycyjny pasek postępu. pv ogranicza się do wyświetlania informacji, które może wyodrębnić z procesu, który jest przesyłany potokiem.

Używanie pv i tar do tworzenia archiwum

Kopiowanie plików za pomocą pv i tar nie pozostawia nam pliku archiwum. Rodzaj „wirtualnego” archiwum jest tworzone przez tar, który jest przesyłany bezpośrednio z powrotem do tar w celu wypakowania plików. Jeśli naszym celem jest kopiowanie plików, to jest to osiągnięte. Ale co, jeśli chcemy utworzyć plik archiwum?

Nadal możemy użyć tar do stworzenia pliku archiwum i uzyskania raportu o postępach z pv. Opcje używane z tar to -c (utwórz archiwum), -z (kompresuj za pomocą gzip) i -f (nazwa pliku archiwum).

Zauważ, że używamy – jako nazwy pliku, co powoduje użycie tar stdouti zapisać jego wynik w oknie terminala. Nie widzimy tego wyjścia, ponieważ jest przesyłane potokiem przez pv.

Rzeczywistą nazwą archiwum będzie nazwa pliku, do którego przesyłamy dane wyjściowe z pv. W tym przypadku jest to „help-files.tgz”.

tar -czf - ./help-files/ | pv > help-files.tgz

tar -czf - ./help-files/ |  pv> help-files.tgz w oknie terminala ”width =” 646 ″ height = ”57 ″ onload =” pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this); ”  onerror = ”this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);”> </p>
<p> Otrzymujemy te same wskaźniki postępu co poprzednio i tworzony jest dla nas plik archiwum. </p>
<p> < p> <img loading =

Opcje wyświetlania pv

Istnieje wiele opcji, których możesz użyć z pv, aby zmienić szczegóły raportu.

Jeśli użyjesz którejkolwiek z tych opcji, wszystkie pozostałe opcje zostaną wyłączone. Więc jeśli chcesz mieć używane trzy opcje wyświetlania, musisz określić te trzy opcje.

Używanie pv bez żadnych opcji jest tym samym, co używanie opcji -pterb.

-p: wyświetla procent wykonania. To jest pasek postępu i procent ukończenia.
-t: wyświetla upływający czas.
-e: wyświetla ETA.
-r: wyświetl szybkość przesyłania danych.
-b: wyświetla liczbę bajtów (dane przesłane do tej pory).
-n: wyświetla procent jako liczbę całkowitą. Spowoduje to wyświetlenie procentu ukończenia jako liczby całkowitej, z każdą nową aktualizacją w nowym wierszu.

Powtórzmy ostatnie polecenie i przekażmy opcję -p (procent wykonania) do pv.

tar -czf - ./help-files/ | pv - p > help-files.tgz

tar -czf - ./help-files/ |  pv - p> help-files.tgz w oknie terminala ”width =” 646 ″ height = ”57 ″ onload =” pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this); ”  onerror = ”this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);”> </p>
<p> To wyłącza wszystkie inne opcje wyświetlania.  pv podaje tylko procent ukończenia elementu. </p>
<p> Ponieważ pv nie otrzymuje procentu ukończenia z tar, pasek postępu jest zastąpiony ruchomym wskaźnikiem.  Nie ma wartości procentowej. </p>
<p> <img loading =

Korzystanie z pv z wc

Możemy użyć pv do przesłania pliku tekstowego (lub plików) do wc. wc wtedy policzy powrót karetki, znaki i słowa, a pv da nam raport o postępie.

Tutaj przesyłamy wszystkie pliki „.page” z katalogu help-files do wc.

pv ./help-files/*.page |  wc w oknie terminala

Po zakończeniu wc możemy zobaczyć naszą liczbę powrotu karetki (linie), znaki i słowa ze wszystkich plików „.page” w folderze help-files.

wyjście z pv i wc w oknie terminala

Instalowanie polecenia postępu

Polecenie postępu daje ten sam rodzaj przydatna informacja jako pv, ale działa z określonym zestawem poleceń Linuksa.

Aby zainstalować postęp w Ubuntu, użyj tego polecenia:

sudo apt-get install progress

sudo apt-get postęp instalacji w oknie terminala

Aby zainstalować postęp w Fedorze, użyj tego polecenia:

sudo dnf install progress

postęp instalacji sudo dnf w oknie terminala

Aby zainstalować postęp w Manjaro, użyj tego polecenia:

sudo pacman -Syu progress

sudo pacman -Syu postęp w oknie terminala

Postęp poleceń działa z

Wpisanie postępu w oknie terminala i naciśnięcie klawisza Enter spowoduje wyświetlenie listy poleceń, z którymi współpracuje postęp.

progress

wyjście polecenia postępu w oknie terminala

Korzystanie z postępu z rurami

Istnieją dwie techniki, których możemy użyć do monitorowania postępu poleceń. Pierwszym jest użycie rur.

Polecenie tar znajduje się na liście obsługiwanych poleceń, które mogą monitorować postęp, więc użyjmy tar.

Opcje, których będziemy używać, to standardowe opcje -c (utwórz archiwum), -z (kompresuj za pomocą gzip) i -f (nazwa pliku). Utworzymy skompresowane archiwum wszystkiego w folderze help-files, a archiwum zostanie nazwane „help.tgz”.

Przygotowujemy to do postępu i używamy opcji -m (monitor), aby postęp nadal raportował proces, dopóki się nie zakończy.

tar -czf help.tgz ./help-files/ | progress -m

tar -czf help.tgz ./help-files/ |  progress -m w oknie terminala

Okno terminala pokaże postęp komendy tar podczas tworzenia archiwum.

monitorowanie postępu poleceń tar w oknie terminala

Każdy plik jest przetwarzany na liście wraz z następującymi informacjami:

Identyfikator procesu.
Nazwa procesu.
Procent ukończony.
Przetwarzane dane i całkowity rozmiar pliku.
Szybkość transmisji danych (przepustowość).
Szacowany pozostały czas (ETA).

Możesz być zaskoczony, widząc drugi zestaw danych. Ten pierwszy zestaw danych dotyczy tar. Drugi dotyczy programu gzip. tar wywołuje gzip w celu wykonania kompresji. Ponieważ gzip znajduje się na liście obsługiwanych poleceń, raporty o jego postępie.

Korzystanie z postępu w trybie ciągłego monitorowania

Możesz użyć postępu w trybie ciągłego monitorowania w czasie rzeczywistym, używając opcji -M (monitor).

Wpisz następujące polecenie w oknie terminala:

progress -M

postęp -M w oknie terminala

postęp zgłosi, że nie ma uruchomionych poleceń do monitorowania. Ale nie wracasz do wiersza poleceń. postęp czeka na uruchomienie polecenia, które może monitorować. Następnie automatycznie rozpocznie raportowanie na ten temat.

postęp oczekiwanie na uruchomienie polecenia w oknie terminala

W innym oknie terminala wpisz polecenie znajdujące się na liście poleceń, które mogą monitorować postęp.

Będziemy używać kota. Polecenia, które kończą się zbyt szybko, nie będą rejestrowane z postępem, więc wymienimy zawartość bardzo długiego pliku tekstowego.

cat words.page

cat words.page w oknie terminala

W oknie terminala z postępem zobaczysz statystyki dla polecenia cat, gdy jest ono wykonywane i pracuje w kierunku zakończenia.

raportowanie postępu na temat kota w oknie terminala

Kiedy cat zakończy wyświetlanie postępu pliku, powraca do stanu oczekiwania.

Za każdym razem, gdy jedno z poleceń, o których może raportować, wykonuje duże zadanie, postęp automatycznie je monitoruje i raportuje.

To całkiem fajne.

Ukończono w 100%

Zapomnij o domysłach, zastanawiając się, jak działa długo działające polecenie, i zrób sobie przerwę od kontemplowania kursora z pv i postępem.