ฉันจะติดตามความคืบหน้าของวว


39

ฉันใช้คำสั่งต่อไปนี้เพื่อสร้างการ์ด SD ที่บูตได้

sudo dd bs=4m if=en_windows_10_enterprise_version_1511_x64_dvd_7224901.iso of=/dev/disk2

มีวิธีในการติดตามความคืบหน้าหรือไม่?


คำตอบ:


57

ข้อมูลเดียวกันที่แสดงทุกวินาทีโดยคำตอบของ klanomath สามารถแสดงโดยใช้คำสั่งของคุณ คุณเพียงแค่ต้องป้อนcontrolTอักขระจากแป้นพิมพ์ในขณะที่ddคำสั่งดำเนินการ

โดยการกดcontrolTตัวอักษรคุณกำลังส่งSIGINFOสัญญาณเดียวกันกับddคำสั่งที่คำสั่งpkill -INFO -x ddส่ง


25

ในฐานะของ coreutils 8.24, dd เพิ่มตัวเลือกสถานะ ติดตั้ง coreutils ด้วย Homebrew เพื่ออัพเดท 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
ไม่ทราบเกี่ยวกับ coreutils มีประโยชน์มาก
SteveLambert

1
แม้ว่าวิธีนี้จะใช้ได้ผล แต่คุณจะยกเลิกการเพิ่มความเร็วในการใช้Raw Disk
eyoung100

8

ddตัวเองไม่ได้ให้แถบความคืบหน้า คุณสามารถประเมินความคืบหน้าของกระบวนการคัดลอก dd ได้โดยเพิ่มคำสั่งpkill -INFO

ตัวอย่าง:

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

ผล:

[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

ซึ่งแปลว่ามหันต์ 18.1 GB / s


รายละเอียดฮาร์ดแวร์ของเครื่องที่คุณใช้คำสั่งนั้นคืออะไร?
user3439894

@ user3439894 3.5 GHz i7 iMac ทำไม?
klanomath

เป็นเพียงแค่อยากรู้อยากเห็นเพราะการส่งออกไบต์ / วินาทีซึ่งโดยวิธีการที่เป็นจริง 16.8 GB / s (ปัดเศษขึ้น) เช่นเดียวกับฐาน 2 ไม่ใช่ฐานการคำนวณ 10
user3439894

5

แรกของทั้งหมดที่ติดตั้งHomebrew แพคเกจผู้จัดการ จากนั้นคุณต้องติดตั้งpvและdialogใช้คำสั่งนี้:

brew install pv dialog

จากนั้นคุณสามารถเรียกใช้คำสั่งนี้เพื่อรับแถบความคืบหน้าด้วยคำสั่ง:

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

แต่ให้แทนที่disk.imgด้วยพา ธ ไปยังรูปภาพและdiskXด้วยตัวระบุดิสก์ของการ์ด SD ของคุณ หากคุณต้องการกราฟิกที่มากกว่านี้คุณสามารถลองทำสิ่งนี้:

(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

ที่มา: https://askubuntu.com/a/516724/765767


3

คุณสามารถกดControl+ tในขณะที่ddคำสั่งกำลังทำงานหรือแถบความคืบหน้าดีที่คุณสามารถติดตั้งpv(ไปป์) ผ่าน Homebrew:

brew install pv

จากนั้นดำเนินการ:

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

หรือ (รู้ขนาดของภาพ, 16GB ในตัวอย่างนี้):

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


ตัวอย่างผลลัพธ์ 2:

(การถ่ายโอนข้อมูลเวลาที่ผ่านไปความเร็วแถบความคืบหน้าและเวลาโดยประมาณ):

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

2

นั่นง่ายมาก! สำหรับ macOS High Sierra และต่ำกว่าให้เรียกใช้ while loop และมันจะทำงานจนกว่าจะเสร็จสิ้น เพียงให้แน่ใจว่าได้ทำรหัสด้านล่างในหน้าต่างอื่น:

รหัสด้านล่างจะทำงานนอกกรอบในขณะที่บูตเฟิร์มแวร์หรือภายในระบบปฏิบัติการเต็มเป่า

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

^ เพื่อให้เครื่องตื่นตัว (คาเฟอีน) โดยไม่ต้องใช้“ homebrew” หรือเครื่องมือที่ไม่มีใน Mac OS X มาตรฐานเนื่องจาก homebrew ต้องใช้อินเทอร์เน็ตและระบบปฏิบัติการจริงเพื่อติดตั้ง

หมายเหตุ:ข้างต้นต้องการให้คุณเปลี่ยน PID ด้วย ID กระบวนการของคุณและมันจะแสดงความคืบหน้าอย่างต่อเนื่อง


ฉันยังพบว่าจะทำให้เครื่องตื่นอยู่เสมอเพื่อที่คุณจะไม่กลับมาหลับและต้องตื่นขึ้นมาอย่างต่อเนื่อง
Don-Pierre Halfaway

สคริปต์ข้างต้นบอกวันที่ให้คุณคัดลอกสถิติของมันและทำให้มันตื่นขึ้นมาทุก ๆ 10 วินาที
Don-Pierre Halfaway

เหมาะที่สุดสำหรับเทอร์มินัลบน Mac เมื่อคุณไม่ได้อยู่ในระบบปฏิบัติการเต็มรูปแบบ แต่ภายใน Firmaware / bios วิธีแก้ปัญหาที่ควรจดจำอย่างแน่นอน
Don-Pierre Halfaway

จุดประสงค์ของการ$(...)คืออะไร? ฉันรู้ว่าสิ่งที่พวกเขาทำโดยทั่วไปฉันแค่สงสัยว่าทำไมคุณใช้พวกเขาที่นี่?
nohillside

เพื่อหลีกเลี่ยงช่องว่างและทำให้คำสั่งรันทั้งหมดภายในหนึ่งบรรทัด ฉันแน่ใจว่าฉันสามารถเพิ่ม "(" และ ")" ได้สองเท่า แต่ฉันต้องการให้ผู้คนเห็นตัวเลือกที่มีให้ในแบบคนธรรมดา
Don-Pierre Halfaway
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.