Làm thế nào tôi có thể theo dõi tiến trình của dd


Câu trả lời:


57

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 ddlệnh đang thực thi.

Bằng cách nhấn controlTký tự, bạn đang gửi SIGINFOtín hiệu tương tự đến ddlệnh mà lệnh pkill -INFO -x ddgửi.


25

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    

3
Không biết về coreutils, rất tiện dụng.
SteveLambert

1
Mặc dù điều này hoạt động, bạn vô hiệu hóa việc tăng tốc độ khi sử dụng Đĩa thô
Eyoung100

8

ddchí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.


Thông số kỹ thuật phần cứng của máy bạn đã chạy lệnh đó là gì?
dùng3439894

@ user3439894 iMac 3,5 GHz i7. Tại sao?
klanomath

Chỉ tò mò vì đầu ra byte / giây, mà thực tế là 16,8 GB / s (làm tròn) vì đó là cơ sở 2, không phải là tính toán cơ sở 10.
dùng3439894

5

Trước hết, cài đặt Trình quản lý gói Homebrew . Sau đó, bạn phải cài đặt pvdialogvớ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.imgbằng đường dẫn đến hình ảnh và diskXbằ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

Nguồn: https://askubfox.com/a/516724/765767


3

Bạn có thể nhấn Control+ ttrong khi ddlệ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

2

Đ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


Tôi cũng tìm thấy để giữ cho máy luôn tỉnh táo để bạn không quay lại ngủ và phải liên tục đánh thức nó.
Don-Pierre Halfaway

Kịch bản trên cho bạn biết ngày, cung cấp cho bạn statis của nó sao chép và giữ cho nó tỉnh táo cứ sau 10 giây
Don-Pierre Halfaway

Nó được sử dụng tốt nhất cho thiết bị đầu cuối trên Mac khi bạn không ở trong hệ điều hành hoàn toàn. Nhưng trong Firmwar / bios. Chắc chắn là một giải pháp cần nhớ
Don-Pierre Halfaway

Mục đích của cái $(...)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?
nohillside

để thoát khoảng trắng và khiến lệnh chạy tất cả trong một dòng. Tôi chắc chắn rằng tôi có thể nhân đôi "(" và ")" nhưng tôi muốn mọi người thấy các tùy chọn có sẵn trong cách tiếp cận giáo dân
Don-Pierre Halfaway 24/07/18
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.