Comment puis-je suivre les progrès de dd

Réponses:

57

Les mêmes informations, affichées chaque seconde par dans la réponse de klanomath, peuvent être affichées à l'aide de votre commande. Il vous suffit de saisir un controlTcaractère à partir du clavier pendant l' ddexécution de la commande.

En appuyant sur le controlTcaractère, vous envoyez le même SIGINFOsignal à la ddcommande que la commande pkill -INFO -x ddenvoie.

David Anderson
la source
25

À partir de coreutils 8.24, dd a ajouté des options de statut. Installez coreutils avec Homebrew pour mettre à jour dd.

brew install coreutils
# All commands have been installed with the prefix 'g'
sudo gdd if=XXXX.iso of=/dev/diskX bs=1 status=progress 

> example:
> 139648967 bytes (140 MB, 133 MiB) copied, 304 s, 459 kB/s    
davidcondrey
la source
3
Je ne connaissais pas les coreutils, très pratique.
SteveLambert
1
Bien que cela fonctionne, vous annulez l'augmentation de la vitesse d'utilisation du disque brut
eyoung100
8

ddlui-même ne fournit pas de barre de progression. Vous pouvez cependant estimer la progression du processus de copie dd en ajoutant une commande pkill -INFO .

Exemple:

dd if=/dev/zero of=/dev/null bs=64m count=1000 & while pkill -INFO -x dd; do sleep 1; done

Résultat:

[1] 37691
0+0 records in
0+0 records out
0 bytes transferred in 0.028923 secs (0 bytes/sec)
275+0 records in
275+0 records out
18454937600 bytes transferred in 1.029698 secs (17922667819 bytes/sec)
553+0 records in
553+0 records out
37111201792 bytes transferred in 2.048291 secs (18118129881 bytes/sec)
829+0 records in
829+0 records out
55633248256 bytes transferred in 3.068911 secs (18128009214 bytes/sec)
1000+0 records in
1000+0 records out
67108864000 bytes transferred in 3.720346 secs (18038339571 bytes/sec)
[1]+  Done                    dd if=/dev/zero of=/dev/null bs=64m count=1000

Ce qui se traduit par un énorme 18,1 Go / s.

klanomath
la source
Quelles sont les spécifications matérielles de la machine sur laquelle vous avez exécuté cette commande?
user3439894
@ user3439894 iMac i7 3,5 GHz. Pourquoi?
klanomath
Était juste curieux à cause de la sortie octets / sec, qui est en fait 16,8 Go / s (arrondi) car ce sont des calculs en base 2, pas en base 10.
user3439894
5

Tout d'abord, installez Homebrew Package Manager . Ensuite, vous devez installer pvet dialogavec cette commande:

brew install pv dialog

Vous pouvez ensuite exécuter cette commande pour obtenir une barre de progression avec la commande:

dd if=disk.img bs=1m | pv disk.img | dd of=/dev/diskX bs=1m

mais assurez-vous de le remplacer disk.imgpar le chemin d'accès à l'image et diskXpar l'identifiant de disque de votre carte SD. Si vous voulez quelque chose de plus graphique, vous pouvez essayer ceci:

(dd if=disk.img bs=1m | pv -n disk.img | dd of=/dev/diskX bs=1m conv=notrunc,noerror) 2>&1 | dialog --gauge "Writing image to SD card..." 10 70 0

Source: /ubuntu//a/516724/765767

pixelomer
la source
3

Vous pouvez appuyer sur Control+ tpendant que la ddcommande est en cours d'exécution ou pour une belle barre de progression, vous pouvez installer pv(visualiseur de tuyaux) via Homebrew:

brew install pv

puis exécutez:

sudo dd if=disk-image.img | pv | sudo dd of=/dev/disk2

ou (connaissant la taille de l'image, 16 Go dans cet exemple):

dd if=disk-image.img | pv -s 16G | dd of=/dev/disk2


Exemple de sortie 2:

(données transférées, temps écoulé, vitesse, barre de progression et temps estimé):

    1.61GiB 0:12:19 [2.82MiB/s] [===>                 ] 10% ETA 1:50:25
Guglie
la source
2

C'est facile! Pour macOS High Sierra et versions antérieures, exécutez simplement une boucle while et elle s'exécutera jusqu'à ce qu'elle soit terminée. Assurez-vous simplement de faire le code ci-dessous dans une autre fenêtre:

Le code ci-dessous fonctionnera hors de la boîte lors d'un démarrage du firmware ou dans le système d'exploitation complet

while kill -0 $PID; do $(caffeinate -t 10) $(kill - INFO $PID) echo “still copying file” “$(date)”; done

^ Pour garder la machine en éveil (caféine) sans utiliser de «homebrew» ou d'outils non disponibles dans Mac OS X standard car homebrew nécessite Internet et un OS réel pour l'installer.

REMARQUE: ce qui précède nécessite que vous remplaciez le PID par votre ID de processus et il affichera constamment la progression

Don-Pierre Halfaway
la source
J'ai également trouvé pour garder la machine éveillée afin que vous ne reveniez pas dormir et que vous deviez constamment la réveiller.
Don-Pierre Halfaway
Le script ci-dessus vous indique la date, vous donne les statistiques de sa copie et la maintient éveillée toutes les 10 secondes
Don-Pierre Halfaway
Il est préférable de l'utiliser pour le terminal sur Mac lorsque vous n'êtes pas dans le système d'exploitation complet. Mais au sein de Firmaware / bios. Certainement une solution à retenir
Don-Pierre Halfaway
Quel est le but du $(...)? Je sais ce qu'ils font en général, je me demande juste pourquoi vous les utilisez ici?
nohillside
pour échapper aux espaces et provoquer l'exécution de la commande sur une seule ligne. Je suis sûr que je pourrais doubler les "(" et ")" mais je voulais que les gens voient les options disponibles dans une approche profane
Don-Pierre Halfaway