Un comando abbastanza sconosciuto, ma molto potente dei sistemi Unix è dd, utilizzato prevalentemente per effettuare copie di interi device fisici.
Analizzando le opzioni d’esecuzione dell’implementazione GNU del comando (quella utilizzata da tutte le distribuzioni Linux), sembra non esistere
un sistema per monitorare lo stato d’avanzamento, situazione insostenibile nel caso in cui si stia effettuando la copia fisica di un intero device
(come ad esempio un hard disk).
Ho usato appropriatamente il termine “sembra non esistere”, perché il sistema c’è eccome e consiste semplicemente nell’inviare una
Signal di tipo USR1 al PID che identifica il processo dd in esecuzione.
Ad esempio, supponiamo d’aver lanciato il seguente comando:
$ dd if=/dev/sda of=file.img bs=1M
per verificarne lo stato d’avanzamento, per prima cosa ne reperiamo il PID attraverso il seguente comando
(eseguito ovviamente da un’altro terminale):
$ ps -eaf | grep dd
...
root 2423 2417 8 18:38 pts/2 00:00:00 dd if=/dev/sda of=file,img bs=1M
...
stabilito che il PID del processo è 2423, inviamo ora la signal di tipo USR1 tramite il seguente comando:
$kill -USR1 2423
ed a questo punto sul terminale in cui è stato lanciato il dd, apparirà lo stato d’avanzamento:
3155+0 record dentro
3155+0 record fuori
3308257280 byte (3,3 GB) copiati, 60,7201 s, 54,5 MB/s
Per semplificare il tutto, normalmente lancio il dd in background con questo comando:
$ dd if=/dev/sda of=file.img & pid_dd=$!
per poi effettuare l’inoltro della Signal nel seguente modo:
$ kill -USR1 $pid_dd
Potete trovale la fonte :
QUI
Mi piace:
Mi piace Caricamento...
0 commenti