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

Opublikowany: 2022-01-29
Monit o terminal Linux na laptopie
Fatmawati Achmad Zaenuri/Shutterstock.com

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

Jeśli lecisz samolotem długodystansowym bez ekranów wideo w oparciach foteli, nie jest łatwo zorientować się, jak daleko jesteś w podróży. Wiesz, kiedy wystartowałeś. Wiesz, ile czasu ma potrwać lot. Ale skąd wiesz, czy jesteś na dobrej drodze, na czas, czy opóźniasz się? Jeśli nie chcesz oglądać filmu w locie, zwykle możesz przełączyć ekran wideo, aby wyświetlić mapę z pozycją samolotu na niej. Otrzymasz również statystyki, takie jak przewidywany czas przybycia (ETA), co jest świetne.

Rozpoczęcie polecenia z okna terminala może czasami przypominać lot długodystansowy bez ekranu wideo. Nic nie wskazuje na to, czy wszystko jest w porządku, czy proces się zawiesił, ani jak blisko jest ukończenia. Migający kursor nie jest zbyt pouczający.

Polecenia pv i progress dają trochę statystyk i trochę wizualnych informacji zwrotnych. Możesz zobaczyć, jak blisko jest do zakończenia procesu. Oznacza to, że otrzymujesz ETA za uruchomione procesy. W porównaniu ze wpatrywaniem się w kursor wygrywa.

Instalowanie pv

Musisz zainstalować pv .

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

 sudo apt-get zainstaluj pv 

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

 sudo dnf zainstaluj pv 

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

 sudo pacman - syu pv 

Korzystanie z pv

pv oznacza przeglądarkę rur. Orurowanie musi być gdzieś zaangażowane w komendę. Oto przykład, w którym przesyłamy obraz ISO przez zip , aby utworzyć skompresowany plik zip ISO.

Reklama

Aby spowolnić polecenia na tyle, aby można było zrobić zrzut ekranu, niektóre pliki w przykładach użytych w tym artykule zostały zapisane na starym, wolnym, zewnętrznym USB o nazwie SILVERXHD.

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

Informacje, które przekazuje nam pv , można zobaczyć w dolnej linii wyświetlacza.

Od lewej do prawej wyświetlane informacje to:

  • Dane przekazane do tej pory.
  • Dawno upłynął czas.
  • Szybkość przesyłania danych (przepustowość).
  • Pasek postępu i procent ukończonej figury.
  • Szacowany czas pozostały do ​​zakończenia (ETA).

Kopiowanie pliku za pomocą pv

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

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

Podczas kopiowania pliku otrzymujemy raport z postępów.

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 pliki pomocy/ | pv | tar -x -C Dokumenty/ 

Reklama

Część polecenia tar -c help-files/ nakazuje tar utworzenie ( -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 dla ostatniej części 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.

Tym razem wyjście jest nieco inne.

Nie dostajemy 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 smoły do ​​tworzenia archiwum

Kopiowanie plików z pv i tar nie pozostawia nam pliku archiwum. Rodzaj „wirtualnego” archiwum jest tworzony przez tar , który jest wprowadzany z powrotem do tar , aby wyodrębnić pliki. Jeśli naszym celem jest kopiowanie plików, to się udało. Ale co, jeśli chcemy stworzyć plik archiwum?

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

Zauważ, że używamy - jako nazwy pliku, co powoduje, że tar używa stdout i zapisuje swoje dane wyjściowe w oknie terminala. Nie widzimy tego wyjścia, ponieważ jest on przesyłany przez pv .

Reklama

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

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

Otrzymujemy te same wskaźniki postępu, co poprzednio, a plik archiwum tworzony jest dla nas.

POWIĄZANE: Jak kompresować i wyodrębniać pliki za pomocą polecenia tar w systemie Linux

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. Jeśli więc chcesz mieć w użyciu 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 czas, który upłynął .
  • -e : wyświetl ETA .
  • -r : wyświetla szybkość przesyłania danych.
  • -b : wyświetla liczbę bajtów (dane przesyłane do tej pory).
  • -n : wyświetla procent jako liczbę całkowitą . Drukuje procent ukończenia jako liczbę całkowitą, z każdą nową aktualizacją w nowym wierszu.

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

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

Reklama

Spowoduje to wyłączenie wszystkich innych opcji wyświetlania. pv podaje tylko procent ukończenia elementu.

Ponieważ pv nie otrzymuje procentu ukończenia z tar , pasek postępu zostaje zastąpiony ruchomym wskaźnikiem. Nie ma wartości procentowej.

Korzystanie z pv Z wc

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

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

Po zakończeniu wc możemy zobaczyć naszą liczbę powrotu karetki (linii), znaków i słów ze wszystkich plików „.page” w folderze plików pomocy.

Instalowanie postępu polecenia

Polecenie progress daje ten sam rodzaj przydatnych informacji co pv , ale działa z określonym zestawem poleceń systemu Linux.

Aby zainstalować progress w Ubuntu, użyj tego polecenia:

 postęp instalacji sudo apt-get 

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

 postęp instalacji sudo dnf 

Postęp instalacji sudo dnf w oknie terminala

Aby zainstalować progress w Manjaro, użyj tego polecenia:

 sudo pacman - postęp Syu 

Postęp poleceń Współpracuje z

Wpisanie progress w oknie terminala i naciśnięcie klawisza Enter spowoduje wyświetlenie listy poleceń, z którymi działa progress .

 postęp 

Korzystanie z postępu z rurami

Istnieją dwie techniki, których możemy użyć do monitorowania progress poleceń. Pierwszym z nich jest użycie rur.

Polecenie tar znajduje się na liście obsługiwanych poleceń, które progress może monitorować, więc użyjmy tar .

Opcje, których użyjemy, to standardowe opcje -c (utwórz archiwum), -z (skompresuj za pomocą gzip) i -f (nazwa pliku). Utworzymy skompresowane archiwum wszystkiego, co znajduje się w folderze plików pomocy, a archiwum będzie się nazywać „help.tgz”.

Wprowadzamy to do progress i używamy opcji -m (monitor), aby progress raportował proces, dopóki się nie zakończy.

 tar -czf help.tgz ./help-files/ | postęp -m 

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

Reklama

Gdy każdy plik jest przetwarzany, jest on wyświetlany z następującymi informacjami:

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

Możesz być zaskoczony, gdy pojawi się drugi zestaw danych. Ten pierwszy zestaw danych dotyczy tar . Drugi dotyczy gzip . tar wywołuje gzip w celu wykonania kompresji. Ponieważ gzip znajduje się na liście obsługiwanych poleceń, raporty z jego progress .

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

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

Wpisz następujące polecenie w oknie terminala:

 postęp -M 

progress zgłosi, że nie ma uruchomionych poleceń do monitorowania. Ale nie wracasz do wiersza poleceń. progress czeka, aż uruchomi się polecenie, które może monitorować. Następnie automatycznie rozpocznie raportowanie na ten temat.

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

Użyjemy cat . Polecenia, które kończą się zbyt szybko, nie zostaną zarejestrowane w progress , więc wymienimy zawartość bardzo długiego pliku tekstowego.

 kot słowa.strona 

Reklama

W oknie terminala z progress zobaczysz statystyki polecenia cat podczas jego wykonywania i pracy w kierunku zakończenia.

Gdy cat zakończy wyświetlanie, progress pliku wraca do stanu oczekiwania.

Za każdym razem, gdy jedno z poleceń, które może raportować, wykonuje duże zadanie, progress automatycznie je monitoruje i raportuje.

To całkiem fajne.

Ukończono w 100%

Pozbądź się zgadywania z zastanawiania się, jak radzi sobie długo działające polecenie, i zrób sobie przerwę od kontemplowania kursora z pv i progress .

POWIĄZANE: Najlepsze laptopy z systemem Linux dla programistów i entuzjastów