Làm thế nào để bạn theo dõi tiến trình của dd?


654

ddlà một kỳ quan Nó cho phép bạn nhân đôi ổ cứng sang ổ khác, hoàn toàn bằng 0 ổ cứng, v.v. Nhưng một khi bạn khởi chạy một ddlệnh, sẽ không có gì để cho bạn biết về tiến trình của nó. Nó chỉ ngồi đó tại con trỏ cho đến khi lệnh cuối cùng kết thúc. Vậy làm thế nào để theo dõi tiến trình của dd?

Câu trả lời:


728

Cập nhật 2016 : Nếu bạn sử dụng GNU coreutils> = 8.24 (mặc định trong Ubuntu Xenial 16.04 trở lên), hãy xem phương pháp 2 bên dưới để biết cách thay thế để hiển thị tiến trình.


Phương pháp 1: Bằng cách sử dụng pv

Cài đặt pvvà đặt nó giữa ddcác lệnh chỉ đầu vào / đầu ra .

Lưu ý : bạn không thể sử dụng nó khi bạn đã bắt đầu dd.

Từ mô tả gói :

pv- Tube Viewer - là một công cụ dựa trên thiết bị đầu cuối để theo dõi tiến trình của dữ liệu thông qua một đường ống. Nó có thể được chèn vào bất kỳ đường ống thông thường nào giữa hai quá trình để đưa ra một dấu hiệu trực quan về tốc độ truyền dữ liệu, thời gian thực hiện, thời gian gần hoàn thành và ước tính thời gian sẽ hoàn thành.

Cài đặt

sudo apt-get install pv

Thí dụ

dd if=/dev/urandom | pv | dd of=/dev/null

Đầu ra

1,74MB 0:00:09 [ 198kB/s] [      <=>                               ]

Bạn có thể chỉ định kích thước gần đúng với --sizenếu bạn muốn ước tính thời gian.


Ví dụ Giả sử đĩa 2GB được sao chép từ / dev / sdb

Lệnh không có pvsẽ là:

sudo dd if=/dev/sdb of=DriveCopy1.dd bs=4096

Lệnh với pv:

sudo dd if=/dev/sdb | pv -s 2G | dd of=DriveCopy1.dd bs=4096

Đầu ra:

440MB 0:00:38 [11.6MB/s] [======>                             ] 21% ETA 0:02:19

Công dụng khác

Tất nhiên bạn có thể sử dụng pvtrực tiếp để dẫn đầu ra tới thiết bị xuất chuẩn:

pv /home/user/bigfile.iso | md5sum

Đầu ra

50,2MB 0:00:06 [8,66MB/s] [=======>         ] 49% ETA 0:00:06

Lưu ý rằng trong trường hợp này, pvnhận dạng kích thước tự động.


Phương pháp 2: statusTùy chọn mới được thêm vào dd(GNU Coreutils 8.24+)

ddtrong GNU Coreutils 8.24+ (Ubuntu 16.04 trở lên) có một statustùy chọn mới để hiển thị tiến trình:

Thí dụ

dd if=/dev/urandom of=/dev/null status=progress

Đầu ra

462858752 bytes (463 MB, 441 MiB) copied, 38 s, 12,2 MB/s

76
pv bigfile.iso | dd của = / dev / yourdevice
Ion Br.

18
Lưu ý rằng các tham số cho "dd" là phù hợp trong nửa đầu (phần đầu vào của ống) : dd if=/dev/zero bs=1M count=35000 | pv | dd of=VirtualDisk.raw.
Sopalajo de Arrierez

6
pv bigfile.iso | dd of=VirtualDisk.raw bs=1M count=35000Công trình, xác minh. @SopalajodeArrierez, các tham số có thể được đưa ra trong dd thứ hai.
SiddharthaRT

11
sử dụng pv < /dev/sda > /dev/sdbdường như để có được tốc độ tốt hơn ( nguồn )
Nicola Feelrin

14
FYI về tốc độ. Thử nghiệm trên máy tính của tôi với SSD Samsung 840 PRO: dd if=/dev/urandom | pv | of=/dev/sdbcho tốc độ ghi ~ 18 MB / giây, dd if=/dev/zero | pv | of=/dev/sdbcho ~ 80 MB / giây và cũ đơn giản dd if=/dev/zero of=/dev/sdbcho ~ 550MB / giây (gần với tốc độ ghi tối đa của SSD). Tất cả với bs=4096000.
Tedd Hansen

461

Từ HowTo: Theo dõi tiến trình của dd

Bạn có thể theo dõi tiến trình của dd mà không tạm dừng nó bằng cách sử dụng killlệnh.

Để xem tiến trình của ddmột khi nó đang chạy, hãy mở một thiết bị đầu cuối khác và nhập:

sudo kill -USR1 $(pgrep ^dd)

Điều này sẽ hiển thị ddtiến trình trong ddcửa sổ đầu cuối mà không làm dừng quá trình. Nếu bạn đang sử dụng BSD hoặc OS X, hãy sử dụng INFOthay vì USR1. Các USR1tín hiệu sẽ chấm dứt đ.

Nếu bạn muốn nhận thông tin cập nhật thường xuyên về ddtiến trình, hãy nhập:

watch -n5 'sudo kill -USR1 $(pgrep ^dd)'

watchsẽ thăm dò ddquá trình cứ sau -n giây ( -n5= 5 giây) và báo cáo mà không tạm dừng nó.

Lưu ý các dấu ngoặc đơn thích hợp trong các lệnh trên.


19
Điều này làm việc, nhưng một vài ý kiến. Trước hết, tôi không chắc tại sao bạn thoát được backticks của mình (nếu đó là trình soạn thảo SO, bạn đã làm sai). Thứ hai, tôi khuyên bạn nên sử dụng ^ dd $, trong trường hợp có thứ gì đó khác đang chạy với tiền tố dd. Cuối cùng, bạn không cần sudo để gửi tín hiệu USR1. Nếu không, câu trả lời tốt, +1.
gsingh2011

22
Lưu ý! Cách này làm gián đoạn dd làm việc theo OSX.
Maxim Kholyavkin

26
@Speakus Bạn phải sử dụng kill -INFO $(pgrep ^dd$)trên các hệ thống BSD (như OSX).
Torben

20
sudo pkill -usr1 dddễ nhớ hơn, hoạt động hoàn toàn tốt (ít nhất là trên Ubuntu 14.04) và ít gõ hơn.
Phizes

21
Tôi thích điều này bởi vì tôi sợ pvsẽ làm chậm quá trình chuyển tiền, như TeddHansen đã chỉ ra. Ngoài ra, tôi sẽ đặt cược nhiều người đang làm điều này vì họ đã bắt đầu ddhoạt động;)
sudo

104

Một vài cách sử dụng mẫu tiện dụng với pvvà ít gõ hoặc nhiều tiến bộ hơn thì các câu trả lời khác:

Trước tiên, bạn sẽ cần phải cài đặt pv, với lệnh:

sudo apt-get install pv

Sau đó, một số ví dụ là:

pv -n /dev/urandom | dd of=/dev/null
pv -tpreb source.iso | dd of=/dev/BLABLA bs=4096 conv=notrunc,noerror

Lưu ý: mẫu đầu tiên ít gõ 5 ký tự dd if=/dev/urandom | pv | dd of=/dev/null.

Và yêu thích của tôi để sao chép ổ đĩa (thay thế X bằng ký tự ổ đĩa):

(pv -n /dev/sdX | dd of=/dev/sdX bs=128M conv=notrunc,noerror) 2>&1 | dialog --gauge "Running dd command (cloning), please wait..." 10 70 0

ảnh chụp màn hình

nguồn: http://www.cyberciti.biz/faq/linux-unix-dd-command-show-proTHER-fter-coping/

Cũng để lưu trữ bản thân mình.


3
bạn cũng cần cài đặt dialogbằng lệnhapt-get install dialog
k7k0

7
YÊU các dialogví dụ. NGHIÊM TÚC NGAY BÂY GIỜ !
alex xám

Bạn chỉ có thể gọi hộp thoại đó với python?
mikeymop

1
cảm ơn câu trả lời này, đã phát hiện ra dialogđiều này sẽ giúp ích rất nhiều trong việc viết các kịch bản shell: D
holms

2
brew install pv dialogcho Mac. Ngoài ra quý ông này tính toán với phong cách. Bravo.
evilSnobu

62

Sử dụng Ctrl+ Shift+ Ttrong khi ddđang chạy và nó sẽ xuất tiến trình (tính bằng byte):

load: 1.51  cmd: dd 31215 uninterruptible 0.28u 3.67s
321121+0 records in
321120+0 records out
164413440 bytes transferred in 112.708791 secs (1458745 bytes/sec)

5
Không hoạt động với tôi trên Kubfox Trusty. Có thể xung đột ràng buộc quan trọng?
jamadagni

14
Cách tuyệt vời. Nó hoạt động theo OSX, nhưng không hoạt động trong Ubuntu 14.04
Maxim Kholyavkin

1
Dòng đầu tiên được tạo ra bởi OS X, chỉ sau 3 dòng là từ dd.
Itay Grudev

3
Bạn sẽ có thể sử dụng kill -INFO trên BSD như OS X
macshome

3
Điều này không hoạt động trên Ubuntu. Ctrl-T / Ctrl-Shift-T chỉ xuất ra ^Tthiết bị đầu cuối (ngoại trừ nhiều ứng dụng đầu cuối sẽ chặn Ctrl-Shift-T và mở một tab mới). Nhiều người tìm kiếm trên OSX / BSD có thể đánh giá cao câu trả lời này, nhưng cần phải làm rõ rằng nó không dành cho Ubuntu (hay GNU / LInux nói chung?)
mwfearnley

60

Vì lợi ích của sự hoàn chỉnh:

Phiên bản 8.24 của lõi GNU bao gồm một bản vá cho dd giới thiệu một tham số để in tiến trình.

Cam kết giới thiệu thay đổi này có nhận xét:

dd: new status = tiến độ để in số liệu thống kê định kỳ

Nhiều bản phân phối, bao gồm Ubuntu 16.04.2 LTS sử dụng phiên bản này.


chỉ muốn thêm cách tôi đã biên dịch 8,24 coreutils: apt install build-essentialapt-get build-dep coreutilssau đó tải xuống coreutils-8.25.tar.xz tar xvf coreutils-8.25.tar.xz configure --prefix=$HOME/usr/localvà chạy make. Mới được biên soạn ddsẽ được theo srcdir. Bạn có thể sao chép nó vào / bin và thay thế một hoặc jus hiện có chạy như src / dd
holms

2
Mát mẻ! Tôi thích tính năng này. Và chỉ mất khoảng 30 năm để dạy dd in tiến độ đầu ra. :-)
Johannes Overmann

Thật là nhẹ nhõm! Tôi sẽ ngay lập tức thêm đối số này trong một bí danh vỏ dd.
Stephan Henningsen

Lưu ý rằng đôi khi trạng thái sẽ in với hai số, một số theo đơn vị SI và giá trị tương đương theo đơn vị nhị phân (ví dụ 10 MB, 9,5 MiB).
palswim

33

Cách tốt nhất là sử dụng http://dcfldd.sourceforge.net/ thật dễ dàng để cài đặt thông qua apt-get


3
cảm ơn con trỏ tới dcfldd, rất tương thích với dd nhưng một số tính năng mới tốt. Tôi đặc biệt thích sự tiến bộ tiêu chuẩn.
Floyd

4
Tại sao dcfldd không được biết đến nhiều hơn là một bí ẩn hoàn toàn đối với tôi.
Freedom_Ben

28
có lẽ vì tên của nó
Giovanni Toraldo

Nó có các tùy chọn ddvà tùy chọn status=ontheo mặc định, cho các thông báo tiến trình, statusinterval=N(N trong các khối) cho tần suất cập nhật tin nhắn và sizeprobe=[if|of]cho một chỉ báo tỷ lệ phần trăm. Tôi sẽ đặt bí danh cho nó DD:)
kavadias

25

Tình trạng tiến độ bản địa đã được thêm vào dd !!!

Phiên bản mới của Coreutils (8.24) thêm trạng thái tiến trình vào ddcông cụ:

Cách sử dụng trên Xubfox 15.10:

Mở một terminal và gõ các lệnh sau:

wget ftp://ftp.gnu.org/pub/gnu/coreutils/coreutils-8.24.tar.xz
tar -xf coreutils-8.24.tar.xz
cd coreutils-8.24
./configure && make -j $(nproc)

Chạy ddbằng root:

sudo su
cd src
./dd if=/dev/sdc of=/dev/sda conv=noerror status=progress

Bạn sẽ thấy: Byte, giây và tốc độ (Byte / giây).

Để kiểm tra các phiên bản của dd:

Tự nhiên:

dd --version

Mới:

cd coreutils-8.24/src
./dd --version

18

Nếu bạn đã bắt đầu dd và nếu bạn đang viết một tệp như khi tạo một bản sao của ổ đĩa vào đĩa, bạn có thể sử dụng lệnh watch để liên tục quan sát kích thước của tệp đầu ra để xem các thay đổi và ước tính hoàn thành.

watch ls -l /pathtofile/filename

Để chỉ xem kích thước tệp (chế độ xem h-human):

watch ls -sh /pathtofile/filename

Cũng là một phương pháp hữu hiệu ...
ζ--

3
Hữu ích, mặc dù điều này không nhất thiết phải hoạt động nếu bạn chuyển đầu ra dd sang một thứ khác ngoài tệp (ví dụ: gzip'ing trước khi ghi nó vào đĩa).
Ponkadoodle

Không hoạt động trên các tập tin đặc biệt.
Julian Overmann

13

Bộ dd | pv | ddba đã khiến bản sao 50 triệu vm của tôi mất 800 giây, trái ngược với 260 giây chỉ bằng dd. Với đường ống này, ít nhất, pv không biết tệp đầu vào lớn đến mức nào nên nó sẽ không thể cho bạn biết bạn đi được bao xa nên không có bất lợi gì khi thực hiện như sau - và bạn có được lợi thế tốc độ tốt:

Tôi sẽ tránh pv trên bất cứ thứ gì lớn và (nếu sử dụng Bash):

Control-Z quá trình dd

bgđể đặt nó trong nền. Quan sát rằng bgsẽ cung cấp cho bạn đầu ra như [1] 6011số thứ hai là id quá trình. Vì vậy, làm:

while true; do kill -USR1 process_id ; sleep 5; done

trong đó process_id là id quá trình bạn quan sát thấy. Nhấn Control-C khi bạn thấy một cái gì đó như:

[1]+  Done dd if=/path/file.qcow2 of=/dev/kvm/pxetest bs=4194304 conv=sparse
-bash: kill: (60111) - No such process

Bạn xong việc rồi.

Chỉnh sửa: Quản trị viên hệ thống ngớ ngẩn! Tự động hóa cuộc sống của bạn, đừng làm việc! Nếu tôi có một quá trình dd dài mà tôi muốn theo dõi, thì đây là một lớp lót sẽ chăm sóc toàn bộ enchilada cho bạn; đặt tất cả trên một dòng:

 dd if=/path/to/bigimage of=/path/to/newimage conv=sparse bs=262144 & bgid=$!; while true; do sleep 1; kill -USR1 $bgid || break; sleep 4; done

Tất nhiên, bạn có thể tạo kịch bản cho nó, có thể kiếm $ 1 tệp đầu vào của bạn và $ 2 tệp đầu ra của bạn. Điều này được để lại như một bài tập cho người đọc. Lưu ý rằng bạn cần ngủ ít trước khi giết hoặc giết có thể chết khi cố gửi tín hiệu đến dd khi nó chưa sẵn sàng. Điều chỉnh giấc ngủ của bạn như mong muốn (thậm chí có thể loại bỏ hoàn toàn giấc ngủ thứ hai).

Bash-FTW! :-)


1
Nén whilevòng lặp. Sử dụng watch.
muru

1
@muru nó phụ thuộc. Tôi không biết về hệ thống của bạn nhưng trên CentOS7 * đầu ra hơi bị cắt xén; nó có thể đọc được nhưng trông không có trật tự. Ngoài ra, nó vượt qua đầu ra trước đó của bạn để bạn mất lịch sử về tốc độ của dd; của tôi thay đổi giữa 20 MB / s và 300 MB / s. Thật thú vị khi xem các con số khác nhau và cũng có hướng dẫn. Tôi nghĩ rằng một số phương sai lớn là do các nhóm mỏng LVM tăng phân bổ cho LV tôi đang viết. * vâng, đây là một diễn đàn ubfox nhưng tôi đã đến đây để tìm kiếm "tiến trình theo dõi dd". Đó là kết quả đầu tiên trên Google.
Mike S

Ồ, ý tôi là trong một thiết bị đầu cuối hoặc cửa sổ màn hình khác, hãy chạy sudo watch pkill dd. Sau đó xem ddđầu ra các số liệu thoải mái.
muru

Pkill sẽ gửi SIGTERM theo mặc định? Tôi thậm chí không muốn thử nghiệm, vì pgrep dd xuất hiện với 3 pid khi chạy một dd duy nhất: kthreadd, lẻjob và dd. Tôi sợ những gì pkill sẽ làm. Bạn có thể gửi tín hiệu -USR1 bằng pkill nhưng một lần nữa tôi không biết liệu có an toàn để gửi đến chuỗi nhân hay tới obbjob không. Lệnh đồng hồ trông sạch hơn nhưng có vẻ như rất nhiều bước bổ sung chỉ để tránh vòng lặp while. Nói chung, nếu tôi đang làm một dd trong một cửa sổ, tôi sẽ làm một cái gì đó ngay sau đó trong cùng một vỏ. Vòng lặp while an toàn: bạn biết CHÍNH XÁC mà pid nhận được tín hiệu.
Mike S

chủ yếu là tôi không quan tâm những cái nắp nào nhận được tín hiệu, vì tôi sử dụng watch pkill -USR1 -x dd. Vì tôi cũng sử dụng watchcho các nhiệm vụ tương tự khác, nên điều này xuất hiện một cách tự nhiên.
muru


7

Dễ nhất là:

 dd if=... of=... bs=4M status=progress oflag=dsync

oflag=dsyncsẽ giữ cho văn bản của bạn đồng bộ, vì vậy thông tin status=progresschính xác hơn. Tuy nhiên nó có thể chậm hơn một chút.



Cảm ơn vì điều đó! Tôi đang thực hiện dd đến một lvm2 từ xa và bs = 4M đã tăng số lần chuyển của tôi lên gấp 20 lần và chỉ báo tiến độ là tuyệt vời.
Lonnie hay nhất

6

Trên Ubuntu 16.04

Ubuntu 16.04 đi kèm với dd (coreutils) Phiên bản 8.25 . Do đó tùy chọn status=progress được hỗ trợ :-)

Để sử dụng nó, chỉ cần thêm status=progresscùng với ddlệnh của bạn .

Thí dụ :

dd bs=4M if=/media/severus/tools-soft/OperatingSystems/ubuntu-16.04-desktop-amd64.iso of=/dev/null status=progress && sync

Cung cấp trạng thái như

1282846183 bytes (1.2 GiB, 1.1 GiB) copied, 14.03 s, 101.9 MB/s

nhập mô tả hình ảnh ở đây


5

Sử dụng tùy chọn status=progressđể có được tiến trình trong quá trình chuyển nhượng.

Ngoài ra, conv=fsyncsẽ hiển thị lỗi I / O.

Thí dụ:

sudo dd if=mydistrib.iso of=/dev/sdb status=progress conv=fsync


3

Tôi đã tạo bash Wrapper trên ddđó sẽ sử dụng pvđể hiển thị tiến trình. Đặt nó vào của bạn .bashrcvà sử dụng ddnhư bình thường:

# dd if=/dev/vvg0/root of=/dev/vvg1/root bs=4M
    2GB 0:00:17 [ 120MB/s] [===========================================================>] 100%            
0+16384 records in
0+16384 records out
2147483648 bytes (2.1 GB) copied, 18.3353 s, 117 MB/s

Nguồn:

dd()
{
    local dd=$(which dd); [ "$dd" ] || {
        echo "'dd' is not installed!" >&2
        return 1
    }

    local pv=$(which pv); [ "$pv" ] || {
        echo "'pv' is not installed!" >&2
        "$dd" "$@"
        return $?
    }

    local arg arg2 infile
    local -a args
    for arg in "$@"
    do
        arg2=${arg#if=}
        if [ "$arg2" != "$arg" ]
        then
            infile=$arg2
        else
            args[${#args[@]}]=$arg
        fi
    done

    "$pv" -tpreb "$infile" | "$dd" "${args[@]}"
}

Cách tốt nhưng nó không hoạt động với các lệnh như sudo hoặc thời gian.
Maxim Kholyavkin

1
Đặt nó vào / usr / local / bin / dd với cái này ở trên : #!/bin/bash. Trên dưới: tmp=":${PATH}:"; tmp=${tmp/:/usr/local/bin:/:}; tmp=${tmp%:}; PATH=${tmp#:}; dd "$@"Hoặc bạn có thể muốn ddvị trí mã hóa cứng . Sau đó sử dụng local dd=/usr/bin/dd. Đừng quên thêm bit thực thi : chmod +x /usr/local/dd.
midenok

2

Vì vậy, hôm nay tôi đã có một chút thất vọng khi cố gắng chạy killtrong một vòng lặp trong khi ddđang chạy, và đã đưa ra phương pháp này để chạy chúng song song, dễ dàng:

function vdd {
    sudo dd "$@" &
    sudo sh -c "while pkill -10 ^dd$; do sleep 5; done"
}

Bây giờ chỉ cần sử dụng vddbất cứ nơi nào bạn thường sử dụng dd(nó chuyển tất cả các đối số trực tiếp qua) và bạn sẽ nhận được báo cáo tiến trình được in mỗi 5s.

Nhược điểm duy nhất là lệnh không trả về ngay lập tức khi dd hoàn thành; vì vậy có thể lệnh này có thể khiến bạn chờ thêm 5 giây sau khi dd quay lại trước khi thông báo và thoát.


2

Điều này buộc dd phải cung cấp số liệu thống kê cứ sau 2 giây, mặc định cho đồng hồ:

watch killall -USR1 dd

Để thay đổi từ cứ sau 2 giây thành 5 giây, hãy thêm tùy chọn -n 5 như thế này:

watch -n 5 killall -USR1 dd

2

Chỉ trong trường hợp bất kỳ ai từ vùng đất CentOS tình cờ tìm thấy chủ đề này ...

Tùy chọn 'status = tiến trình' hoạt động với CentOS 7.5 và 7.6

Câu trả lời ở trên của @davidDavidson ngụ ý tính năng mới được thêm vào trong Coreutils 8.24.

Phiên bản 8.24 của lõi GNU bao gồm một bản vá cho dd giới thiệu một tham số để in tiến trình.

Đây có thể là trường hợp, nhưng CentOS có thể không tuân theo cùng một sơ đồ phiên bản.

Phiên bản Coreutils đi kèm với CentOS 7.6.1810 là:

coreutils-8.22-23.el7.x86_64 : A set of basic GNU tools commonly used in shell scripts

Và phiên bản của dd được cài đặt là:

[root@hostname /]# dd --version
dd (coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Paul Rubin, David MacKenzie, and Stuart Kemp.

Điều này cho thấy các phiên bản 8.22 .

Tuy nhiên, tôi đã thử nghiệm 'status = tiến trình' với dd trên cả CentOS 7.5 và CentOS 7.6 (cả hai đều có phiên bản 8.22 của Coreutils) và nó hoạt động đúng.

Tôi không biết tại sao RedHat chọn sử dụng một phiên bản Coreutils cũ như vậy nhưng chức năng vẫn tồn tại với 8.22.


1

Như đã đề cập ở trên, ít nhất là với 'dd' từ lõi core GNU hoặc busybox, nó sẽ phản hồi tín hiệu USR1 bằng cách in thông tin tiến trình lên stderr.

Tôi đã viết một tập lệnh bao bọc nhỏ cho dd hiển thị chỉ báo phần trăm hoàn thành tốt đẹp và cố gắng không can thiệp vào quá trình hoặc cách thức hoạt động của dd theo bất kỳ cách nào. Bạn có thể tìm thấy nó trên github:

http://github.com/delt01/dd_printpercent

Thật không may, thủ thuật SIGUSR1 này chỉ hoạt động với cả GNU GNU (từ gói coreutils) hoặc chế độ 'dd' của busybox với tính năng cụ thể được bật trong thời gian biên dịch. Nó không hoạt động với 'dd' có trong hầu hết các hệ thống BSD, bao gồm FreeBSD và OS X ... :(


Liên kết đã chết.
ishmael

1

Bạn có thể xem tiến trình của bất kỳ chương trình coreutils nào bằng cách sử dụng progress - Coreutils Progress Viewer.

Nó có thể theo dõi:

cp mv dd tar cat rsync grep fgrep egrep cut sort md5sum sha1sum sha224sum sha256sum sha384sum sha512sum adb gzip gunzip bzip2 bunzip2 xz unxz lzma

Bạn có thể xem trang này

Bạn có thể sử dụng nó trong một cửa sổ đầu cuối riêng biệt trong khi lệnh đang chạy hoặc khởi chạy nó bằng lệnh dd:

dd if=/dev/sda of=file.img & progress -mp $!

Ở đây &rèn lệnh đầu tiên và tiếp tục ngay lập tức thay vì đợi cho đến khi lệnh kết thúc.

Lệnh tiến trình được khởi chạy cùng với: -mvì vậy nó chờ cho đến khi quá trình được giám sát kết thúc, -pdo đó , nó sẽ theo dõi một pid đã cho và $!là lệnh cuối cùng.

Nếu bạn phát hành dd với sudo, bạn cũng phải tiến bộ quá:

sudo dd if=/dev/sda of=file.img &
sudo progress -m
# with no -p, this will wait for all coreutil commands to finish
# but $! will give the sudo command's pid
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.