przystajnik

Terminal pogryzł człowieka: pv

Nawet jeżeli ktoś nie żywi sympatii do linuksowego terminala, to potrafi wymienić co najmniej jedną czynność, którą łatwiej i wygodniej jest przeprowadzić w terminalu. Moim ulubionym zajęciem jest nagrywanie obrazów iso na pendrive’ach za pomocą programu dd. Szybko, łatwo, skutecznie (o ile dobrze wskaże się urządzenie wyjściowe) i tylko czasem może brakuje informacji, ile jeszcze taki proces nagrywania zajmie czasu, albo w który miejscu akurat się znajduje. I tu z pomocą przychodzi pv, którego skromna nazwa nie odzwierciedla miodności płynącej z kontrolowania przesyłania danych potokami w Linuksie.

Program pv znajdziemy we wszystkich popularnych dystrybucjach. Wg. opisu z instrukcji, pv „monitoruje postęp przesyłania danych przez potok (ang. pipe)”. I tyle. A co z tego wynika? Ano to, że dzięki tej prozaicznej funkcjonalności możemy odwiesić na kołku nudę i niepewność podczas np. klonowania partycji, dysków, tworzenia obrazów iso, nagrywania ich, itp, itd. Jedyne co musimy zrobić, to umieścić pv w potoku pomiędzy poleceniami, pomiędzy którymi chcemy monitorować przepływ danych. Program ma też możliwość odczytu ze standardowego wejścia (jak cat), co ułatwia np. wspomniane nagrywanie obrazów iso. Do tego dochodzi sporo przełączników, którymi możemy sprecyzować co i jak chcemy mieć wyświetlanie. Gdy nie podamy żadnych, pv aktywuje -pterb (p włącza pasek postępu, t pokazuje łączny czas, e próbuje ustawić ile czasu jeszcze pozostało do zakończenia, r wyświetli prędkość przesyłania danych, b zsumuje ilość przesłanych danych).

No dobrze, ale jak to wygląda w praktyce? Kilka przykładów z życia:

Monitorowanie postępu obliczania sumy kontrolnej obrazu iso:

$# pv nasze.iso | md5sum
 48MB 0:00:04 [85,7MB/s] [===>                                ] 12% ETA 0:00:27

Wykorzystaliśmy tutaj możliwość pv odczytu ze standardowego źródła. Ważna uwaga – ETA w tym przypadku wyliczy się prawidłowo, gdyż pv zna rozmiar obrazu podanego jako parametr. W innych przypadkach będziemy musieli (opcjonalnie) poinstruować program parametrem -s jaka ilość danych będzie przesyłana.

Nagrywanie iso:

$# pv nasze.iso | dd of=/dev/null bs=4M
 54GB 0:00:17 [96,7MB/s] [===================>                ] 58% ETA 0:00:11

Klonowanie dysku sda na sdb – UWAGA, TO ZEPSUJE DANE NA DYSKU SDB!

$# pv /dev/sda | dd of=/dev/sdb bs=64M

Tworzenie obrazu dysku:

$# dd if=/dev/sda | pv | dd of=/disc-image.img

I tak dalej, i tak dalej…
 

Post navigation

6 comments for “Terminal pogryzł człowieka: pv

  1. Tomaz
    13 stycznia, 2015 at 23:59

    pv /dev/sda | dd of=/disc-image.img

    jak się zrobi tak to będzie widoczny rozmiar i zostanie wyliczone ETA, chociaż nie sprawdzałem czy obraz się zrobi poprawnie,

  2. 14 stycznia, 2015 at 7:37

    Dokładnie tak jak piszesz. Chciałem jednak pokazać inną kombinację użycia pv. W tym przypadku ETA też może zostać wyliczone, o ile podamy parametr -s rozmiar_obrazu.

  3. MrPanNikt
    14 stycznia, 2015 at 20:38

    Polecam zapoznać się również z bmapem działa szybciej niż tradycyjne dd.

  4. gryf
    15 stycznia, 2015 at 6:51

    podobne narzędzie:
    http://clpbar.sourceforge.net/

  5. megaziuziek
    15 stycznia, 2015 at 13:21
  6. megaziuziek
    25 stycznia, 2015 at 13:23

    Znalazłem kolejny fajny programik:
    dfc
    wyświetla zużycie przestrzeni dysku w kolorach i nie tylko.Jest w repo Minta

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Translate »