dd – wyświetlanie postępu wykonywania kopii
Nawet „windziarzom”, raz na jakiś czas nadarza się konieczność wykorzystania narzędzi spod znaku pingwina :). Jednym z takich narzędzi, jest niewątpliwie dd. Ponieważ korzystam z tego bardzo rzadko, dlatego też nigdy nie pamiętam, aby ew. pobrać jakieś rozszerzone wersje tego bardzo pożytecznego narzędzia z repozytoriów i koniec końców, pracuje na wersji standardowej.
Niewątpliwie, jedną z jego niewielu wad jest fakt, iż nie udostępnia w standardzie żadnego sposobu na podejrzenie postępu wykonywanych kopii.
Można co prawda użyć innych narzędzi (np pv) ale … trzeba pamiętać aby je pobrać etc (patrz akapit wyżej).
Na szczęście, można sobie poradzić z w/w niedogodnością dd, za pomocą ciekawej funkcjonalności zmiennych „środowiskowych” bash’a, a konkretnie zmiennej „USR1”.
Potrzebny nam będzie ID procesu, pod którym działa dd.
1) Do tego celu, wykorzystujemy pgrep’a
pgrep ‚^dd$’
2) Dostajemy nr pocesu np.
5283 dd
3) Mając ID procesu, wysyłamy sygnał kill -USR1 o podanym wyżej numerze
kill -USR1 5283
4) dd dostając sygnał USR1, zwróci na standardowe wyjście aktualny stan np.
0+86 records out
2034 bytes (2034 B) copied, 28.32 seconds, 58.0 kB/s
5) Teraz wystarczy w/w zapytanie puścić sobie w pętli, z interwalem powiedzmy 10s
watch -n 10 kill -USR1 5283
Dokładne znaczenie sygnału USR1 oraz jego pobratymcy USR2, pozostawiam linux’iarzom :) Z tego co mi wiadomo, są to sygnały typu „user defined” i w zależności od procesu który je przetwarza, podnoszą/zmieniają poziom logowania, niektóre procesy przeprowadzają jakieś konkretne akcje, a jeszcze inne po prostu je ignorują.
Ogólnie wynik przechwycenie sygnalu SIGUSR1 przez dany proces, zależy od dobrej woli programistów.
Po bliższe info odsyłam do man’a ;)
Podobne Tematy:
-
Adam
-
Marcin
-
Ewa Wierciak