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.


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    

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.


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


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

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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.