Odpowiedzi:
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 dd
polecenia.
Naciskając controlTznak, wysyłasz ten sam SIGINFO
sygnał do dd
polecenia wysłanego przez polecenie pkill -INFO -x dd
.
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
dd
sam 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.
Przede wszystkim zainstaluj Homebrew Package Manager . Następnie musisz zainstalować pv
i za dialog
pomocą 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.img
ją ścieżką do obrazu i diskX
identyfikatorem 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
Możesz nacisnąć Control+, tgdy dd
polecenie 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
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
$(...)
? Wiem, co robią ogólnie, po prostu zastanawiam się, dlaczego ich tutaj używasz?