Bagaimana saya bisa melacak kemajuan dd

Jawaban:

57

Informasi yang sama, ditampilkan setiap detik dalam jawaban klanomath, dapat ditampilkan menggunakan perintah Anda. Anda hanya perlu memasukkan controlTkarakter dari keyboard saat ddperintah sedang dijalankan.

Dengan menekan controlTkarakter, Anda mengirim SIGINFOsinyal yang sama ke ddperintah yang dikirim oleh perintah pkill -INFO -x dd.

David Anderson
sumber
25

Pada coreutils 8.24, dd menambahkan opsi status. Instal coreutils dengan Homebrew untuk memperbarui 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
sumber
3
Tidak tahu tentang coreutils, sangat berguna.
SteveLambert
1
Meskipun ini berfungsi, Anda membatalkan peningkatan kecepatan menggunakan Raw Disk
eyoung100
8

ddsendiri tidak menyediakan bilah kemajuan. Anda dapat memperkirakan progres proses copy dd dengan menambahkan perintah pkill -INFO .

Contoh:

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

Hasil:

[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

Yang diterjemahkan menjadi 18,1 GB / s kekalahan.

klanomath
sumber
Apa spesifikasi perangkat keras dari mesin tempat Anda menjalankan perintah itu?
user3439894
@ user3439894 3.5 GHz i7 iMac. Mengapa?
klanomath
Hanya ingin tahu karena keluaran byte / detik, yang omong-omong sebenarnya 16,8 GB / s (dibulatkan) karena itu adalah basis 2, bukan basis 10 perhitungan.
user3439894
5

Pertama-tama, instal Manajer Paket Homebrew . Maka Anda harus menginstal pvdan dialogdengan perintah ini:

brew install pv dialog

Anda kemudian dapat menjalankan perintah ini untuk mendapatkan bilah kemajuan dengan perintah:

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

tetapi pastikan untuk mengganti disk.imgdengan jalur ke gambar dan diskXdengan pengenal disk kartu SD Anda. Jika Anda menginginkan sesuatu yang lebih grafis, Anda dapat mencoba ini:

(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

Sumber: /ubuntu//a/516724/765767

pixelomer
sumber
3

Anda dapat menekan Control+ tketika ddperintah sedang berjalan atau untuk bilah kemajuan yang bagus, Anda dapat menginstal pv(penampil pipa) melalui Homebrew:

brew install pv

dan kemudian jalankan:

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

atau (mengetahui ukuran gambar, 16GB dalam contoh ini):

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


Contoh output 2:

(data ditransfer, waktu yang berlalu, kecepatan, bilah kemajuan dan perkiraan waktu):

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

Itu mudah! Untuk macOS High Sierra dan di bawah, jalankan saja loop sementara dan itu akan berjalan sampai selesai. Pastikan untuk melakukan kode di bawah ini di jendela lain:

Kode di bawah ini akan berfungsi di luar kotak saat boot firmware atau dalam OS yang penuh sesak nafas

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

^ Agar mesin tetap terjaga (berkafein) tanpa menggunakan "homebrew" atau alat yang tidak tersedia di Mac OS X standar karena homebrew membutuhkan internet dan OS yang sebenarnya untuk menginstalnya.

CATATAN: Persyaratan di atas mengharuskan Anda untuk mengganti PID dengan ID proses Anda dan itu akan terus menunjukkan kemajuan

Don-Pierre Halfaway
sumber
Saya juga menemukan untuk menjaga mesin agar Anda tidak kembali tidur dan harus terus membangunkannya.
Don-Pierre Halfaway
Script di atas memberi tahu Anda tanggalnya, beri Anda statistik menyalinnya dan tetap bangun setiap 10 detik
Don-Pierre Halfaway
Ini paling baik digunakan untuk terminal pada Mac ketika Anda tidak berada dalam sistem operasi pukulan penuh. Tetapi dalam Firmaware / bios. Pasti solusi untuk diingat
Don-Pierre Halfaway
Apa tujuan dari $(...)? Saya tahu apa yang mereka lakukan secara umum, saya hanya ingin tahu mengapa Anda menggunakannya di sini?
nohillside
untuk menghindari spasi dan menyebabkan perintah untuk menjalankan semua dalam satu baris. Saya yakin saya dapat menggandakan "(" dan ")" tetapi saya ingin orang melihat opsi yang tersedia dalam pendekatan orang awam
Don-Pierre Halfaway