Jak mogę śledzić postęp w dd

Odpowiedzi:

57

Te same informacje, wyświetlane co sekundę w odpowiedzi klanomatha, mogą być wyświetlane za pomocą twojego polecenia. Wystarczy wpisać controlTznak z klawiatury podczas wykonywania ddpolecenia.

Naciskając controlTznak, wysyłasz ten sam SIGINFOsygnał do ddpolecenia wysłanego przez polecenie pkill -INFO -x dd.

David Anderson
źródło
25

Od coreutils 8.24, dd dodał opcje statusu. Zainstaluj coreutils z Homebrew, aby zaktualizować 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
źródło
3
Nie wiedziałem o coreutils, bardzo przydatny.
SteveLambert
1
Chociaż to działa,
niweczysz
8

ddsam w sobie nie zapewnia paska postępu. Możesz oszacować postęp procesu kopiowania dd, dodając komendę pkill -INFO .

Przykład:

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

Wynik:

[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

Co przekłada się na ogromną wartość 18,1 GB / s.

klanomath
źródło
Jakie są specyfikacje sprzętowe komputera, na którym uruchomiono to polecenie?
user3439894
@ user3439894 3,5 GHz i7 iMac. Czemu?
klanomath
Byłem po prostu ciekawy z powodu wyjścia bajtów / s, które w rzeczywistości wynosi 16,8 GB / s (w zaokrągleniu w górę), ponieważ są to obliczenia podstawy 2, a nie podstawy 10.
user3439894
5

Przede wszystkim zainstaluj Homebrew Package Manager . Następnie musisz zainstalować pvi za dialogpomocą tego polecenia:

brew install pv dialog

Następnie możesz uruchomić to polecenie, aby uzyskać pasek postępu za pomocą polecenia:

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

ale pamiętaj, aby zastąpić disk.imgją ścieżką do obrazu i diskXidentyfikatorem dysku karty SD. Jeśli chcesz czegoś bardziej graficznego, możesz spróbować:

(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

Źródło: /ubuntu//a/516724/765767

pixelomer
źródło
3

Możesz nacisnąć Control+, tgdy ddpolecenie jest uruchomione lub dla ładnego paska postępu możesz zainstalować pv(przeglądarkę potoków) za pomocą Homebrew:

brew install pv

a następnie wykonaj:

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

lub (znając rozmiar obrazu, 16 GB w tym przykładzie):

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


Przykładowy wynik 2:

(przesłane dane, upływający czas, prędkość, pasek postępu i szacowany czas):

    1.61GiB 0:12:19 [2.82MiB/s] [===>                 ] 10% ETA 1:50:25
Guglie
źródło
2

Tołatwe! W systemie macOS High Sierra i niższym wystarczy uruchomić pętlę while, a będzie ona działać do momentu jej zakończenia. Pamiętaj, aby wykonać poniższy kod w innym oknie:

Poniższy kod będzie działać od razu po uruchomieniu oprogramowania układowego lub w pełnym systemie operacyjnym

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

^ Aby utrzymać maszynę w stanie czuwania (kofeina) bez użycia „homebrew” lub narzędzi niedostępnych w standardowym Mac OS X, ponieważ homebrew wymaga Internetu i rzeczywistego systemu operacyjnego, aby go zainstalować.

UWAGA: Powyższe wymaga zastąpienia PID identyfikatorem procesu i będzie stale pokazywał postęp

Don-Pierre Halfaway
źródło
Odkryłem też, że nie mogę zasnąć, abyś nie wracał do niego śpiący i musiał ciągle go budzić.
Don-Pierre Halfaway
Powyższy skrypt podaje datę, podaje statystyki jej kopiowania i utrzymuje ją w stanie czuwania co 10 sekund
Don-Pierre Halfaway
Najlepiej jest go używać w terminalu na komputerze Mac, gdy nie korzystasz z pełnego systemu operacyjnego. Ale w obrębie Firmaware / bios. Zdecydowanie rozwiązanie do zapamiętania
Don-Pierre Halfaway
Jaki jest cel tego $(...)? Wiem, co robią ogólnie, po prostu zastanawiam się, dlaczego ich tutaj używasz?
nohillside
aby uciec od spacji i spowodować, że polecenie uruchomi się w jednym wierszu. Jestem pewien, że mogłem podwoić liczbę „(” i „)”, ale chciałem, żeby ludzie zobaczyli opcje dostępne dla laika
Don-Pierre Halfaway