Câu trả lời:
Thông tin tương tự, được hiển thị mỗi giây theo câu trả lời của klanomath, có thể được hiển thị bằng lệnh của bạn. Bạn chỉ cần nhập một controlTký tự từ bàn phím trong khi dd
lệnh đang thực thi.
Bằng cách nhấn controlTký tự, bạn đang gửi SIGINFO
tín hiệu tương tự đến dd
lệnh mà lệnh pkill -INFO -x dd
gửi.
Kể từ coreutils 8.24, dd đã thêm một tùy chọn trạng thái. Cài đặt coreutils với Homebrew để cập nhật 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
chính nó không cung cấp một thanh tiến trình. Bạn có thể ước tính tiến trình của quá trình sao chép dd bằng cách thêm lệnh pkill -INFO .
Thí dụ:
dd if=/dev/zero of=/dev/null bs=64m count=1000 & while pkill -INFO -x dd; do sleep 1; done
Kết quả:
[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
Điều này có nghĩa là con số khổng lồ 18,1 GB / s.
Trước hết, cài đặt Trình quản lý gói Homebrew . Sau đó, bạn phải cài đặt pv
và dialog
với lệnh này:
brew install pv dialog
Sau đó, bạn có thể chạy lệnh này để nhận thanh tiến trình với lệnh:
dd if=disk.img bs=1m | pv disk.img | dd of=/dev/diskX bs=1m
nhưng đảm bảo thay thế disk.img
bằng đường dẫn đến hình ảnh và diskX
bằng số nhận dạng đĩa của thẻ SD của bạn. Nếu bạn muốn một cái gì đó đồ họa hơn, bạn có thể thử điều này:
(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
Bạn có thể nhấn Control+ ttrong khi dd
lệnh đang chạy hoặc để có một thanh tiến trình tốt đẹp, bạn có thể cài đặt pv
(trình xem đường ống) qua Homebrew:
brew install pv
và sau đó thực thi:
sudo dd if=disk-image.img | pv | sudo dd of=/dev/disk2
hoặc (biết kích thước của hình ảnh, 16GB trong ví dụ này):
dd if=disk-image.img | pv -s 16G | dd of=/dev/disk2
Ví dụ đầu ra 2:
(dữ liệu được truyền, thời gian trôi qua, tốc độ, thanh tiến trình và thời gian ước tính):
1.61GiB 0:12:19 [2.82MiB/s] [===> ] 10% ETA 1:50:25
Điều đó thật dễ! Đối với macOS High Sierra trở xuống, chỉ cần chạy một vòng lặp while và nó sẽ chạy cho đến khi hoàn thành. Chỉ cần đảm bảo thực hiện mã dưới đây trong một cửa sổ khác:
Mã dưới đây sẽ hoạt động tốt trong khi khởi động chương trình cơ sở hoặc trong hệ điều hành đầy đủ
while kill -0 $PID; do $(caffeinate -t 10) $(kill - INFO $PID) echo “still copying file” “$(date)”; done
^ Để giữ cho máy luôn hoạt động (caffein) mà không cần sử dụng các công cụ homebrew, hoặc các công cụ không có sẵn trong Mac OS X do homebrew yêu cầu internet và một hệ điều hành thực tế để cài đặt nó.
LƯU Ý: Ở trên cần bạn thay thế PID bằng ID tiến trình của bạn và nó sẽ liên tục hiển thị tiến trình
$(...)
gì? Tôi biết những gì họ làm nói chung, tôi chỉ tự hỏi tại sao bạn đang sử dụng chúng ở đây?