Program DD urcite neni potreba predstavovat. Jeho nejvetsi nedostatek (z meho pohledu) je chybejici ukazatel prubehu. Kdyz pomoci dd zapisujete 1TB image, hodi se mit predstavu o aktualnim stavu.
Prvni moznost je poslat dd signal USR1. Po jeho obdrzeni vypise do terminalu svuj aktualni stav.
V jednom okne terminalu spustime dd. Otevreme si druhe okno a zjistime PID programu dd. Porgramem kill pak posleme dd USR1 signal.
1 2 3 4 5 6 7 |
TERMINAL 1 $ <strong>dd if=/dev/random of=/dev/null bs=1K count=100</strong> TERMINAL 2 $ pgrep -l dd 2 kthreadd 6992 dd TERMINAL 2 $ <strong>pgrep -l '^dd'</strong> <strong>6992</strong> dd TERMINAL 2 $ |
jak je videt, je vhodnejsi pouzit regularni vyraz, jinak nam pgrep vraci vsechny procesy obsahujici v nazvu dd.
ID procesu zname – 6992. Nyni mu posleme signal:
1 |
TERMINAL 2 $ <strong>kill -USR1 7359</strong> |
v terminalu jedna se okamzite vypise aktualni stav:
1 2 3 4 |
TERMINAL 1 $ dd if=/dev/random of=/dev/null bs=1K count=100 <strong>0+4 vstoupivších záznamů 0+4 vystoupivších záznamů 84 bajtů (84 B) zkopírováno, 7,93415 s, 0,0 kB/s</strong> |
Posilani signalu funguje, ale je to nepohodlne.
Mnohem lepsi je pouzit program pv. Ten slouzi na zobrazi prubehu dat proudicich skrz rouru. Pouziti:
1 |
$ dd if=/dev/random | pv | dd of=/dev/null bs=1K count=100 |
Pomoci dd cteme soubor a pres rouru ho posilame pv. Pv zobrazuje prubeh a vstup reposila na vystup. Tam bezi dalsi dd a zapisuje data do souboru. Jednoduche a funkcni.
Pokud je predem znama velikost, ukazuje dd i pocet hotovych procent a uplynulou/zbyvajici dobu:
1 |
451,7MB 0:03:18 [15,93MB/s] [=======> ] 52% ETA 0:07:54 |
Pokud neni mozne zjistit velikost, napr. vyse uvede kopirovani /dev/random, obrazuje pv aktualni rychlost a pocet jiz prenesenych dat:
1 |
138,21MB 0:01:47 [ 1,27MB/s] [ <=> ] |
Jiste je mozne zobrazit prubeh vice zpusoby, treba programem dialog, ale pv je rychle, jednoduche a funguje bez chyby.
Ukazkove video poslani USR1 signalu: