Zamiast działać na ślepo, użyj poleceń pv i postęp w Linuksie, aby śledzić bieżący postęp wykonywanych poleceń. Te narzędzia oferują paski postępu dla poleceń, które normalnie ich nie posiadają. Dodatkowo zobaczysz szacowany czas do zakończenia.
Podczas długodystansowego lotu, gdy nie ma ekranów wideo na oparciach siedzeń, trudno określić, jak daleko się jest w podróży. Wiesz, kiedy wystartowałeś i jak długo ma trwać lot, ale jak sprawdzić, czy jesteś na dobrej drodze? Jeśli nie chcesz oglądać filmu z pokładu, często można przełączyć ekran wideo, aby wyświetlić mapę z aktualną lokalizacją samolotu oraz statystyki, takie jak przewidywany czas przybycia (ETA), co jest bardzo pomocne.
Uruchomienie polecenia w terminalu może przypominać długodystansowy lot bez ekranu wideo. Nie masz żadnych wskazówek, czy wszystko jest w porządku, czy proces się zawiesił, ani jak blisko jesteś ukończenia. Migający kursor nie dostarcza zbyt wielu informacji.
Polecenia pv i postęp zapewniają statystyki oraz wizualną informację zwrotną, dzięki czemu wiesz, jak blisko jesteś zakończenia procesu. Otrzymujesz szacowany czas dotarcia do uruchomionych procesów, co jest znacznie lepsze niż wpatrywanie się w kursor.
Instalowanie pv
Aby zainstalować pv, wykonaj odpowiednie polecenie w zależności od używanego systemu operacyjnego:
Aby zainstalować pv na Ubuntu, użyj:
sudo apt-get install pv
Aby zainstalować pv w Fedorze, użyj:
sudo dnf install pv
Aby zainstalować pv na Manjaro, użyj:
sudo pacman -Syu pv
Korzystanie z pv
pv oznacza przeglądarka rur. Rurociąg musi być zaangażowany w polecenie. Oto przykład, w którym przesyłamy obraz ISO przez zip, aby utworzyć skompresowany plik zip ISO.
pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso | zip > gparted.zip
Informacje, które podaje nam pv, można zobaczyć w dolnej części wyświetlacza:
Od lewej do prawej wyświetlane są następujące informacje:
- Dane przesłane do tej pory.
- Czas minął.
- 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
Otrzymujemy raport o postępie podczas kopiowania pliku.
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/
W poleceniu tym tar -c help-files/ instruuje tar do utworzenia archiwum plików w folderze help-files. Przesyłane jest to przez pv, co pozwala na wyświetlanie postępu. Następnie jest to przesyłane z powrotem do tar, aby rozpakować archiwum w folderze Documents.
Tak więc pliki i foldery znajdujące się w folderze help-files są kopiowane do folderu Documents z wyświetlaniem postępu.
Tym razem wydajność jest nieco inna. Nie otrzymujemy ETA. Pasek postępu wyświetla teraz ruchomy wskaźnik, co 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 tworzy nam pliku archiwum. Rodzaj „wirtualnego” archiwum jest tworzony 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) oraz -f (nazwa pliku archiwum).
Zauważ, że używamy – jako nazwy pliku, co powoduje użycie tar do zapisywania danych w stdout. 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
Otrzymujemy te same wskaźniki postępu co poprzednio i tworzony jest dla nas plik archiwum.
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 chcesz używać trzech opcji 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 (pasek postępu i procent ukończenia).
- -t: wyświetla upływający czas.
- -e: wyświetla ETA.
- -r: wyświetla szybkość przesyłania danych.
- -b: wyświetla liczbę bajtów (dane przesłane do tej pory).
- -n: wyświetla procent jako liczbę całkowitą, 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
To wyłącza wszystkie inne opcje wyświetlania. pv podaje tylko procent ukończenia elementu. Ponieważ pv nie otrzymuje procentu ukończenia z tar, pasek postępu jest zastąpiony ruchomym wskaźnikiem, co wskazuje, że proces jest aktywny, ale nie dostarcza wartości procentowej.
Korzystanie z pv z wc
Możemy użyć pv do przesłania pliku tekstowego (lub plików) do wc, które następnie policzy powroty karetki, znaki i słowa, a pv dostarczy nam raport o postępie.
Tutaj przesyłamy wszystkie pliki .page z katalogu help-files do wc.
pv ./help-files/*.page | wc
Po zakończeniu wc zobaczymy liczbę powrotów karetki (linii), znaków i słów ze wszystkich plików .page w folderze help-files.
Instalowanie polecenia postępu
Polecenie postęp dostarcza podobnych informacji jak pv, ale działa z określonym zestawem poleceń Linuksa.
Aby zainstalować postęp w Ubuntu, użyj:
sudo apt-get install progress
Aby zainstalować postęp w Fedorze, użyj:
sudo dnf install progress
Aby zainstalować postęp w Manjaro, użyj:
sudo pacman -Syu progress
Postęp poleceń działa z
Wpisanie postęp w terminalu i naciśnięcie klawisza Enter spowoduje wyświetlenie listy poleceń, z którymi współpracuje postęp.
progress
Korzystanie z postępu z rurami
Istnieją dwie techniki, których możemy użyć do monitorowania postępu poleceń. Pierwszą jest użycie rur.
Polecenie tar znajduje się na liście obsługiwanych poleceń, które mogą monitorować postęp, więc użyjemy tar.
Opcje, których będziemy używać, to standardowe opcje -c (utwórz archiwum), -z (kompresuj za pomocą gzip) oraz -f (nazwa pliku). Utworzymy skompresowane archiwum wszystkiego w folderze help-files, a archiwum zostanie nazwane help.tgz.
tar -czf help.tgz ./help-files/ | progress -m
Okno terminala pokaże postęp komendy tar podczas tworzenia archiwum.
Każdy plik jest przetwarzany na liście 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, a drugi gzip, ponieważ tar wywołuje gzip do wykonania kompresji. Ponieważ gzip znajduje się na liście obsługiwanych poleceń, również raportuje o swoim postępie.
Korzystanie z postępu w trybie ciągłego monitorowania
Możesz użyć postęp 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 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ć, a następnie automatycznie rozpocznie raportowanie na ten temat.
W innym oknie terminala wpisz polecenie znajdujące się na liście poleceń, które mogą monitorować postęp. Będziemy używać cat. Polecenia, które kończą się zbyt szybko, nie będą rejestrowane z postęp, więc wymienimy zawartość bardzo długiego pliku tekstowego.
cat words.page
W oknie terminala z postęp zobaczysz statystyki dla polecenia cat podczas jego wykonywania, co będzie informować o postępie.
Kiedy cat zakończy wyświetlanie pliku, powróci do stanu oczekiwania. Za każdym razem, gdy jedno z poleceń, które mogą być monitorowane, wykonuje duże zadanie, postęp automatycznie je monitoruje i raportuje.
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ęp.