Dd හි ප්‍රගතිය ඔබ නිරීක්ෂණය කරන්නේ කෙසේද?


691

ddපුදුමයකි. දෘ hard තැටියක් වෙනත් කෙනෙකුට අනුපිටපත් කිරීමට, දෘ drive තැටියක් සම්පූර්ණයෙන්ම ශුන්‍ය කිරීමට එය ඔබට ඉඩ දෙයි. නමුත් ඔබ ddවිධානයක් දියත් කළ පසු එහි ප්‍රගතිය ඔබට පැවසීමට කිසිවක් නැත. විධානය අවසන් වන තුරු එය කර්සරයේ වාඩි වී සිටියි. ඉතින් එක් අයෙකු ඩීඩී හි ප්‍රගතිය නිරීක්ෂණය කරන්නේ කෙසේද?

Answers:


777

යාවත්කාලීන කිරීම 2016 : ඔබ GNU coreutils> = 8.24 (උබුන්ටු Xenial 16.04 හි පෙරනිමිය ඉහළට) භාවිතා කරන්නේ නම්, ප්‍රගතිය පෙන්වීම සඳහා විකල්ප ක්‍රමයක් සඳහා පහත 2 වන ක්‍රමය බලන්න.


ක්රමය 1: භාවිතා කිරීමෙන් pv

pvආදාන / ප්‍රතිදානය පමණක් ddවිධාන අතර ස්ථාපනය කර තබන්න .

සටහන : ඔබ දැනටමත් ආරම්භ කළ විට ඔබට එය භාවිතා කළ නොහැක dd.

සිට පැකේජ විස්තර :

pv- පයිප්ප නරඹන්නා - නල මාර්ගයක් හරහා දත්තවල ප්‍රගතිය නිරීක්ෂණය කිරීම සඳහා පර්යන්තය මත පදනම් වූ මෙවලමකි. දත්ත කෙතරම් ඉක්මණින් ගමන් කරයිද, එය කොපමණ කාලයක් ගතවී ඇත්ද, එය සම්පූර්ණ කිරීමට කොපමණ ආසන්නද, සහ එය අවසන් වන තෙක් කොපමණ කාලයක් පවතිනු ඇත්දැයි ඇස්තමේන්තු කිරීම සඳහා ක්‍රියාවලි දෙකක් අතර ඕනෑම සාමාන්‍ය නල මාර්ගයකට එය ඇතුළත් කළ හැකිය.

ස්ථාපනය

sudo apt-get install pv

උදාහරණයක්

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

ප්‍රතිදානය

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

ඔබට --sizeකාල තක්සේරුවක් අවශ්‍ය නම් ඔබට ආසන්න ප්‍රමාණය නියම කළ හැකිය .


උදාහරණය / dev / sdb වෙතින් 2GB තැටියක් පිටපත් කර ඇතැයි උපකල්පනය කිරීම

රහිත විධානය pvවනුයේ:

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

සමඟ අණ කරන්න pv:

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

ප්‍රතිදානය:

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

වෙනත් භාවිතයන්

pvනිමැවුම stdout වෙත පයිප්ප කිරීමට ඔබට ඇත්ත වශයෙන්ම භාවිතා කළ හැකිය :

pv /home/user/bigfile.iso | md5sum

ප්‍රතිදානය

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

මෙම අවස්ථාවේ දී, pvප්‍රමාණය ස්වයංක්‍රීයව හඳුනා ගන්නා බව සලකන්න .


ක්රමය 2: නව statusවිකල්පයක් එකතු කරන ලදි dd(GNU Coreutils 8.24+)

ddGNU Coreutils 8.24+ (උබුන්ටු 16.04 සහ නවතම) statusහි ප්‍රගතිය පෙන්වීමට නව විකල්පයක් ලැබුණි:

උදාහරණයක්

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

ප්‍රතිදානය

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

78
pv bigfile.iso | dd of = / dev / yourdevice
අයන Br.

19
"Dd" සඳහා වන පරාමිතීන් පළමු භාගයේදී සුදුසු බව සලකන්න (පයිප්පයේ ආදාන කොටස) : dd if=/dev/zero bs=1M count=35000 | pv | dd of=VirtualDisk.raw.
සොපාලජෝ ඩි ඇරියරෙස්

6
pv bigfile.iso | dd of=VirtualDisk.raw bs=1M count=35000වැඩ, සත්‍යාපනය. O සොපලාජෝඩ්ආරීරෙස්, පරාමිතීන් දෙවන ඩී.
සිද්ධාර්ථආර්ටී

11
භාවිතා pv < /dev/sda > /dev/sdbකිරීම වඩා හොඳ වේගයක් ලබා ගන්නා බව පෙනේ ( මූලාශ්‍රය )
නිකොලා ෆෙල්ට්‍රින්

17
වේගයෙන් FYI. සැම්සුන් 840 PRO එස්එස්ඩී සමඟ මගේ පරිගණකයේ පරීක්ෂණ: dd if=/dev/urandom | pv | of=/dev/sdbM 18MB / s ලිවීම, dd if=/dev/zero | pv | of=/dev/sdbM 80MB / s dd if=/dev/zero of=/dev/sdbලබා දෙයි , සහ පැරණි පැරණි ~ 550MB / s (SSD උපරිම ලිවීමේ වේගයට ආසන්න) ලබා දෙයි. සියල්ල සමඟ bs=4096000.
ටෙඩ් හැන්සන්

488

HowTo වෙතින් : dd හි ප්‍රගතිය නිරීක්ෂණය කරන්න

killවිධානය භාවිතා කිරීමෙන් ඔබට එය නතර නොකර dd හි ප්‍රගතිය නිරීක්ෂණය කළ හැකිය .

ddඑය ක්‍රියාත්මක වූ පසු එහි ප්‍රගතිය බැලීමට , වෙනත් පර්යන්තයක් විවෘත කර ඇතුල් කරන්න:

sudo kill -USR1 $(pgrep ^dd)

මෙය ක්‍රියාවලිය නතර නොකර පර්යන්ත කවුළුවේ ddප්‍රගතිය පෙන්වනු ඇත dd. ඔබ BSD හෝ OS X හි සිටී නම්, INFOඒ වෙනුවට භාවිතා කරන්න USR1. මෙම USR1සංඥා මඟින් dd අවසන් වනු ඇත.

ddප්‍රගතිය පිළිබඳ නිරන්තර යාවත්කාලීන කිරීම් ලබා ගැනීමට ඔබ කැමති නම් , ඇතුළත් කරන්න:

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

watchddසෑම තත්පරයකම ( -n5= තත්පර 5) ක්‍රියාවලිය විමර්ශනය කර එය නතර නොකර වාර්තා කරයි.

ඉහත විධානයන්හි නිසි තනි උපුටා දැක්වීම් සටහන් කරන්න.


22
මෙය ක්‍රියාත්මක වූ නමුත් අදහස් කිහිපයක්. පළමුවෙන්ම, ඔබ ඔබේ පසුපසට පැන ගියේ ඇයිදැයි මට විශ්වාස නැත (එය SO සංස්කාරකය සඳහා නම්, ඔබ එය වැරදියට කළා). දෙවනුව, dd උපසර්ගය සමඟ වෙනත් දෙයක් ක්‍රියාත්මක වන්නේ නම් ^ dd use භාවිතා කිරීම නිර්දේශ කරමි. අවසාන වශයෙන්, USR1 සං .ාව යැවීමට ඔබට sudo අවශ්‍ය නොවේ. නැතිනම් හොඳ පිළිතුර, +1.
gsingh2011

24
සැ.යු! මේ ආකාරයෙන් OSX යටතේ dd වැඩ වලට බාධා ඇති වේ.
මැක්සිම් කොල්යාව්කින්

29
-පීකස් ඔබ kill -INFO $(pgrep ^dd$)BSD පද්ධතිවල (OSX වැනි) භාවිතා කළ යුතුය.
ටෝර්බන්

21
sudo pkill -usr1 ddමතක තබා ගැනීම පහසුය, හොඳින් ක්‍රියා කරයි (අවම වශයෙන් උබුන්ටු 14.04 මත), සහ ටයිප් කිරීමට අඩුය.
ෆයිසස්

25
pvටෙඩ් හැන්සන් පෙන්වූ පරිදි මාරුවීම මන්දගාමී වේ යැයි මා බිය වන නිසා මම මෙයට කැමතියි . එසේම, මම ඔට්ටු අල්ලමි, ඔවුන් දැනටමත්dd මෙහෙයුම ආරම්භ කර ඇති නිසා බොහෝ දෙනෙක් මෙය ගොග්ලිං කරන බව ;)
sudo

107

හුරුබුහුටි නියැදි කිහිපයක් භාවිතා කිරීම pvහා අඩු ටයිප් කිරීම හෝ වැඩි ප්‍රගතියක් ඇති විට වෙනත් පිළිතුරු:

පළමුව ඔබ pvවිධානය සමඟ ස්ථාපනය කිරීමට අවශ්‍ය වනු ඇත :

sudo apt-get install pv

උදාහරණ කිහිපයක් නම්:

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

සටහන: පළමු නියැදිය අක්ෂර 5 ක් අඩු ටයිප් කිරීමකි dd if=/dev/urandom | pv | dd of=/dev/null.

ඩිස්ක් ඩ්‍රයිව් ක්ලෝන කිරීම සඳහා මගේ ප්‍රියතමය (එක්ස් වෙනුවට ඩ්‍රයිව් අකුරු ආදේශ කරන්න):

(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

තිර රුව

මූලාශ්‍රය: http://www.cyberciti.biz/faq/linux-unix-dd-command-show-progress-what-coping/

මා විසින්ම සංරක්ෂණය කිරීම සඳහා.


3
ඔබ ද dialogවිධානය සමඟ ස්ථාපනය කිරීමට අවශ්‍ය වනු ඇතapt-get install dialog
k7k0

7
LOVE මෙම dialogඋදාහරණයක්. දැන් SERENITY !
ඇලෙක්ස් අළු

ඔබට එම දෙබස පයිතන් සමඟ පමණක් ඇමතිය හැකිද?
mikeymop

1
මෙම පිළිතුරට ස්තූතියි, මෙය dialogෂෙල් ස්ක්‍රිප්ට් ලිවීමට බෙහෙවින් උපකාරී වන බව සොයා ගන්නා ලදී : ඩී
හෝල්ස්

2
brew install pv dialogමැක් සඳහා. එසේම මෙම මහත්වරයා ශෛලිය සමඟ ගණනය කරයි. බ්‍රාවෝ.
badSnobu

69

භාවිතය Ctrl+ Shift+ Tඅතර ddධාවනය වන අතර, එය ප්රතිදාන (බයිට් වලින්) ප්රගතිය කැමැත්ත:

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)

6
කුබුන්ටු ට්‍රස්ටි හි මට වැඩ කරන්නේ නැත. යතුරු බැඳීම් එකිනෙකට පරස්පර විය හැකිද?
ජමඩග්නි

15
නියම ක්‍රමයක්. එය
ඕඑස්එක්ස්

1
පළමු පේළිය ජනනය කරනු ලබන්නේ ඕඑස් එක්ස් විසිනි, පසුව ඇති පේළි 3 පමණි dd.
Itay Grudev

3
OS X
macshome

4
මෙය උබුන්ටු මත ක්‍රියා නොකරයි. Ctrl-T / Ctrl-Shift-T ^Tපර්යන්තයට පමණක් ප්‍රතිදානය කරයි (බොහෝ ටර්මිනල් යෙදුම් හැර Ctrl-Shift-T බාධා කර නව ටැබ් එකක් විවෘත කරනු ඇත). OSX / BSD හි බොහෝ සෙවුම්කරුවන් මෙම පිළිතුර අගය කළ හැකි නමුත් එය උබුන්ටු සඳහා නොවන බව පැහැදිලි කළ යුතුය (හෝ පොදුවේ GNU / LInux?)
mwfearnley

66

සම්පූර්ණත්වය උදෙසා:

අනුවාදය 8,24 පිළිබඳ GNU coreutils ප්රගතිය මුද්රණය පරාමිතියක් හඳුන්වා dd සඳහා ලප ඇතුළත් වේ.

මෙම වෙනස හඳුන්වා දීමේ කැපවීමට අදහස් දැක්වෙන්නේ:

dd: වරින් වර සංඛ්‍යාලේඛන මුද්‍රණය කිරීම සඳහා නව තත්වය = ප්‍රගති මට්ටම

උබුන්ටු 16.04.2 එල්ටීඑස් ඇතුළු බොහෝ බෙදාහැරීම් මෙම අනුවාදය භාවිතා කරයි.


හුදෙක් මම coreutils 8,24 සම්පාදනය කොච්චර එකතු කරන්න ඕන: apt install build-essentialහා apt-get build-dep coreutils, එසේ නම් coreutils-8.25.tar.xz බාගත, tar xvf coreutils-8.25.tar.xz configure --prefix=$HOME/usr/localහා ක්රියාත්මක make. අලුතින් සම්පාදනය කරන ddලද්දේ srcdir යටතේ ය . ඔබට එය / බින් වෙත පිටපත් කර දැනට පවතින එකක් හෝ ජුස් ධාවනය src / dd ලෙස ප්‍රතිස්ථාපනය කළ හැකිය
හෝම්ස්

2
සිසිල්! මම මෙම අංගයට කැමතියි. ප්‍රගති ප්‍රතිදානය මුද්‍රණය කිරීමට dd ඉගැන්වීමට වසර 30 ක් පමණ ගත විය. :-)
ජොහැන්නස් ඕවර්මන්

මොන තරම් සහනයක්ද! මම වහාම මෙම තර්කය dd shell අන්වර්ථයකින් එකතු කරමි.
ස්ටීවන් හෙනිංසන්

තත්වය සමහර විට අංක දෙකකින් මුද්‍රණය කෙරෙන බව සලකන්න, එකක් SI ඒකක වලින් සහ ද්විමය ඒකකවල සමාන අගය (උදා: 10 MB, 9.5 MiB).
palswim

35

හොඳම දේ වන්නේ http://dcfldd.sourceforge.net/ භාවිතා කිරීම apt-get හරහා ස්ථාපනය කිරීම පහසුය


3
dcfldd වෙත දර්ශකයට ස්තූතියි, dd සමඟ ඉතා අනුකූල නමුත් හොඳ නව විශේෂාංග කිහිපයක්. සම්මත ප්‍රගතියට මම විශේෂයෙන් කැමතියි.
ෆ්ලොයිඩ්

4
Dcfldd වඩාත් ප්‍රසිද්ධ නොවන්නේ ඇයිද යන්න මට සම්පූර්ණ අභිරහසකි.
ෆ්‍රීඩම්_බෙන්

31
බොහෝ විට එහි නමට.
ජියෝවානි ටොරල්ඩෝ

පෙරනිමියෙන්, ප්‍රගති පණිවිඩ සඳහා, (බ්ලොක් වලින් එන්) පණිවිඩ යාවත්කාලීන සංඛ්‍යාතය සහ ප්‍රතිශත දර්ශකයක් සඳහා විකල්ප ddසහ විකල්ප status=onඇත . මම එය අන්වර්ථ කරමි :)statusinterval=Nsizeprobe=[if|of]DD
kavadias

28

දේශීය ප්‍රගති තත්ත්වය dd ට එකතු කරන ලදි !!!

Coreutils හි නව අනුවාදය (8.24) ddමෙවලමට ප්‍රගති තත්වයක් එක් කරයි :

Xubuntu 15.10 හි භාවිතය:

ටර්මිනලයක් විවෘත කර මෙම විධානයන් ටයිප් කරන්න:

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)

ddමූල ලෙස ධාවනය කරන්න :

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

ඔබට පෙනෙනු ඇත: බයිට්, තත්පර සහ වේගය (බයිට් / තත්පර).

පහත දැක්වෙන අනුවාදයන් පරීක්ෂා කිරීමට dd:

ස්වදේශීය:

dd --version

අලුත්:

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

18

ඔබ දැනටමත් dd ආරම්භ කර ඇත්නම් සහ ඔබ පෙන්ඩ්‍රයිව් පිටපතක් තැටියට සාදන විට වැනි ගොනුවක් ලියන්නේ නම්, ඔබට වොච් විධානය භාවිතා කර ප්‍රතිදාන ගොනුවේ ප්‍රමාණය නිරන්තරයෙන් නිරීක්ෂණය කර වෙනස්කම් දැක බලා අවසන් කිරීම තක්සේරු කළ හැකිය.

watch ls -l /pathtofile/filename

ගොනු ප්‍රමාණය පමණක් බැලීමට (h-human view):

watch ls -sh /pathtofile/filename

එසේම ශක්‍ය ක්‍රමයක් ...
නැනෝෆරාඩ්

3
ප්‍රයෝජනවත්, ඔබ ඩීඩී ප්‍රතිදානය ගොනුවකට හැර වෙනත් දෙයකට නල කරන්නේ නම් මෙය අනිවාර්යයෙන්ම ක්‍රියාත්මක නොවේ (උදා: තැටියට ලිවීමට පෙර gzip'ing).
පොන්කඩූඩ්ල්

විශේෂ ලිපිගොනු මත ක්‍රියා නොකරයි.
ජොහැන්නස් ඕවර්මන්

13

මෙම dd | pv | dd'ට්රයඩ්' පමණක් dd භාවිතා තත්පර 260 විරුද්ධ ලෙස මගේ 50GB VM, පිටපත් තත්පර 800 විය. මෙම නල මාර්ගය සමඟ, අවම වශයෙන්, පීවීයට ආදාන ගොනුව කොතරම් විශාලදැයි නොදැනෙන බැවින් ඔබ කොපමණ දුරක් සිටිනවාදැයි ඔබට කිව නොහැකි වනු ඇත, එබැවින් එය පහත පරිදි කිරීමට කිසිදු අවාසියක් නොමැත- එවිට ඔබට හොඳ වේග වාසියක් ලැබේ:

මම විශාල දෙයක් සඳහා පීවී එකෙන් වැළකී සිටිමි, සහ (බාෂ් භාවිතා කරන්නේ නම්):

Control-Z dd ක්‍රියාවලිය

bgඑය පසුබිමට දැමීමට. අවසාන අංකය ක්‍රියාවලි හැඳුනුම්පතක් bgවැනි ප්‍රතිදානය ඔබට ලබා දෙන බව නිරීක්ෂණය කරන්න [1] 6011. ඉතින් කරන්න:

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

process_id යනු ඔබ නිරීක්ෂණය කළ ක්‍රියාවලි හැඳුනුම්පතයි. ඔබ එවැනි දෙයක් දුටු විට Control-C ඔබන්න:

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

ඔබ ඉවරයි.

සංස්කරණය කරන්න: මෝඩ පද්ධති පරිපාලක! ඔබේ ජීවිතය ස්වයංක්‍රීය කරන්න, වැඩ නොකරන්න! මට අධීක්ෂණය කිරීමට අවශ්‍ය දිගු ඩීඩී ක්‍රියාවලියක් මා සතුව තිබේ නම්, මෙන්න ඔබ වෙනුවෙන් මුළු එන්චිලඩාවම බලා ගන්නා එක් ලයිනර් ය; මේ සියල්ල එක පේළියකට දමන්න:

 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

ඇත්ත වශයෙන්ම, ඔබට එය ස්ක්‍රිප්ට් කළ හැකිය, සමහර විට ඔබේ ආදාන ගොනුව ඩොලර් 1 ක් සහ ප්‍රතිදාන ගොනුව ඩොලර් 2 ක් බවට පත් කළ හැකිය. මෙය පා er කයාට අභ්‍යාසයක් ලෙස ඉතිරි වේ. Kill ාතනයට පෙර ඔබට කුඩා නින්දක් අවශ්‍ය බව හෝ kill ාතනය මිය යා හැකි අතර එය තවමත් සූදානම් නැති විට dd වෙත සං signal ාවක් යැවීමට උත්සාහ කරයි. ඔබේ නින්ද අවශ්‍ය පරිදි සකසන්න (සමහර විට දෙවන නින්ද සම්පූර්ණයෙන්ම ඉවත් කරන්න).

Bash- FTW! :-)


1
whileලූපය සම්පීඩනය කරන්න . භාවිතා කරන්න watch.
මුරු

1
මුරු එය රඳා පවතී. මම ඔබේ පද්ධතිය ගැන නොදනිමි, නමුත් CentOS7 * හි ප්‍රතිදානය ටිකක් අබලන් ය; එය කියවිය හැකි නමුත් පිළිවෙළකට නොපෙනේ. එසේම එය ඔබගේ පෙර නිමැවුමට වඩා අඩාල වන අතර එමඟින් ඔබේ ඩීඩී වේගය පිළිබඳ ඉතිහාසය ඔබට අහිමි වේ; පතල 20 MB / s සහ 300 MB / s අතර වෙනස් වේ. සංඛ්‍යා වෙනස් වීම සහ උපදේශාත්මක වීම නැරඹීම සිත්ගන්නා කරුණකි. මම හිතන්නේ සමහර විශාල විචල්‍යතාවයට හේතුව LVM තුනී තටාක නිසා මා ලියන LV සඳහා ප්‍රතිපාදන වැඩි කිරීමයි. * ඔව් මෙය උබුන්ටු සංසදයක් නමුත් මම මෙහි පැමිණියේ "ඩීඩී මොනිටරයේ ප්‍රගතිය" සොයමින්. එය ගූගල් හි පළමු ප්‍රති result ලයයි.
මයික් එස්

ඔහ්, මම අදහස් කළේ වෙනත් පර්යන්තයක හෝ තිර කවුළුවක, ධාවනය කරන්න sudo watch pkill dd. ඉන්පසු ddසංඛ්‍යාලේඛන සුවපහසු ලෙස ප්‍රතිදානය කරන්න.
මුරු

පෙරනිමියෙන් pKill SIGTERM යවන්නේ නැද්ද? මට අත්හදා බැලීමට පවා අවශ්‍ය නැත, මන්දයත් pgrep dd තනි ඩීඩී එකක් ධාවනය කිරීමේදී pid 3 ක් සමඟ එන බැවිනි: kthreadd, oddjob සහ dd. Pkill කුමක් කරයිදැයි මම බිය වෙමි. ඔබට -USR1 සං signal ාව pkill සමඟ යැවිය හැකි නමුත් කර්නල් නූල් වෙත යැවීම හෝ objjob වෙත යැවීම ආරක්ෂිත දැයි මම නොදනිමි. ඔරලෝසු විධානය වඩා පිරිසිදු බව පෙනේ, නමුත් එය ටික වේලාවක් වළක්වා ගැනීම සඳහා අමතර පියවර රාශියක් සේ පෙනේ. සාමාන්‍යයෙන් මම එක් කවුළුවක ඩීඩී එකක් කරන්නේ නම්, මම පසුව එකම කවචයේ යමක් කරන්නෙමි. අතරතුර ලූපය ආරක්ෂිතයි: සං id ාව ලැබෙන්නේ කුමන පිට්ටනියදැයි ඔබ හරියටම දන්නවා.
මයික් එස්

බොහෝ විට මම භාවිතා කරන බැවින් කුමන පයිඩවලට සං signal ාව ලැබේද යන්න මට ප්‍රශ්නයක් නොවේ watch pkill -USR1 -x dd. මම watchවෙනත් සමාන කාර්යයන් සඳහා ද භාවිතා කරන බැවින් මෙය ස්වාභාවිකවම පැමිණේ.
මුරු

12

http://linuxcommando.blogspot.com/2008/06/show-progress-during-dd-copy.html

මූලික වශයෙන්:

kill -USR1 < dd pid >

1
"pkill -USR1 dd" යනු මා දන්නා සරලම අනුවාදයයි (ඔබ ඩීඩී එක් අවස්ථාවක් ධාවනය කරන තාක් කල්, කෙසේ වෙතත්). මගේ පද්ධතියේ මට sudo අවශ්‍යයි: "sudo pkill -USR1 dd". ඔබ dd විධානය ටයිප් කිරීමෙන් පසුව ක්‍රියා කරයි, ඔබට අලුත් කිසිවක් ස්ථාපනය කිරීමට අවශ්‍ය නොවේ.
ෆ්‍රෙඩ් හැමිල්ටන්

8

උබුන්ටු 16.04

උබුන්ටු 16.04 dd (coreutils) අනුවාදය 8.25 සමඟ පැමිණේ . ඒ නිසා එම විකල්පය status=progress වන්නේ අනුග්රාහක :-)

එය භාවිතා කිරීමට, status=progressඔබේ ddවිධානය සමඟ එක් කරන්න .

උදාහරණයක් :

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

තත්වය ලබා දෙයි

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

රූප විස්තරය මෙහි ඇතුළත් කරන්න


7

පහසුම දේ:

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

oflag=dsyncඔබගේ ලිවීම සමමුහුර්තව තබා ඇති බැවින් තොරතුරු status=progressවඩාත් නිවැරදි වේ. කෙසේ වෙතත් එය ටිකක් මන්දගාමී විය හැකිය.


1
gnu.org/software/coreutils/manual/html_node/dd-invocation.html ට අනුව , භාවිතා conv=fsyncකිරීම වඩා හොඳය
චෙන් ඩෙන්-ටා

මේ සඳහා ස්තූතියි! මම දුරස්ථ lvm2 වෙත dd කරමින් සිටින අතර bs = 4M මගේ මාරුව 20 කින් වැඩි කළ අතර ප්‍රගති දර්ශකය අපූරුය.
ලොනී හොඳම

6

status=progressමාරුවීමේදී ප්‍රගතිය ලබා ගැනීමට විකල්පය භාවිතා කරන්න .

ඊට අමතරව, conv=fsyncI / O දෝෂ පෙන්වනු ඇත.

උදාහරණයක්:

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

4

මම ඇත්තටම ddrescue වලට කැමතියි, එය dd ලෙස ක්‍රියා කරන නමුත් ප්‍රතිදානය ලබා දෙන අතර දෝෂ මත අසමත් නොවේ. ඊට පටහැනිව එය ඉතා දියුණු ඇල්ගොරිතමයක් ඇති අතර සාර්ථක පිටපතක් කිරීමට දැඩි උත්සාහයක් දරයි ... ඒ සඳහා බොහෝ GUIs ද ඇත

ව්‍යාපෘතිය: https://www.gnu.org/software/ddrescue

විකිපීඩියා: https://en.wikipedia.org/wiki/Ddrescue

රූප විස්තරය මෙහි ඇතුළත් කරන්න


4

සෑම තත්පර 2 කට වරක් සංඛ්‍යාලේඛන ලබා දීමට මෙය බල කරයි.

watch killall -USR1 dd

සෑම තත්පර 2 සිට සෑම තත්පර 5 දක්වා වෙනස් වීමට, මේ ආකාරයට -n 5 විකල්පය එක් කරන්න:

watch -n 5 killall -USR1 dd

3

මම ප්‍රගතිය පෙන්වීමට ddභාවිතා කරන බැෂ් එතුම නිර්මාණය කර ඇත්තෙමි pv. එය ඔබගේ තුළට දමා සුපුරුදු පරිදි .bashrcභාවිතා කරන්න dd:

# 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

මූලාශ්රය:

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[@]}"
}

හොඳ ක්‍රමයක් නමුත් එය sudo හෝ time වැනි විධානයන් සමඟ ක්‍රියා නොකරයි.
මැක්සිම් කොල්යාව්කින්

1
මෙය ඉහළින් / usr / local / bin / dd එකට දමන්න : #!/bin/bash. පතුලේ: tmp=":${PATH}:"; tmp=${tmp/:/usr/local/bin:/:}; tmp=${tmp%:}; PATH=${tmp#:}; dd "$@"හෝ ඔබට දෘඩ කේත කිරීමට අවශ්‍ය විය හැකිය dd. ඉන්පසු භාවිතා කරන්න local dd=/usr/bin/dd. ක්‍රියාත්මක කළ හැකි බිට් එක් කිරීමට අමතක නොකරන්න : chmod +x /usr/local/dd.
midenok

2

ඉතින් අද මම ධාවනය killවන අතරතුර ලූපයක් තුළ ධාවනය කිරීමට උත්සාහ කිරීම ගැන ටිකක් කලකිරීමට පත් වූ අතර ddඒවා සමාන්තරව පහසුවෙන් ධාවනය කිරීම සඳහා මෙම ක්‍රමය ඉදිරිපත් කළෙමි :

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

දැන් vddඔබ සාමාන්‍යයෙන් භාවිතා කරන ඕනෑම තැනක භාවිතා කරන්න dd(එය සියලු තර්ක කෙලින්ම සම්මත කරයි) එවිට ඔබට සෑම 5 තත්පරයකම මුද්‍රිත ප්‍රගති වාර්තාවක් ලැබෙනු ඇත.

එකම අවාසිය නම් dd සම්පූර්ණ වූ වහාම විධානය නැවත නොලැබීමයි; එමනිසා එය දැනුම් දීමට සහ පිටවීමට පෙර dd නැවත පැමිණීමෙන් පසු අමතර 5 ක් බලා සිටීමට මෙම විධානයට හැකිය.


2

සෙන්ටෝස් ඉඩමෙන් ඕනෑම අයෙකුට මෙම නූල සොයා ගැනීමට සිදුවුවහොත් ...

'Status = progress' විකල්පය CentOS 7.5 සහ 7.6 සමඟ ක්‍රියා කරයි

Av ඩේවිඩ් ඩේවිඩ්සන් ඉහත පිළිතුරෙන් ඇඟවෙන්නේ මෙම අංගය කොරූටිල්ස් 8.24 හි අලුතින් එකතු කර ඇති බවයි.

GNU coreutils හි 8.24 අනුවාදයේ ප්‍රගතිය මුද්‍රණය කිරීම සඳහා පරාමිතියක් හඳුන්වා දීම සඳහා dd සඳහා පැච් එකක් ඇතුළත් වේ.

මෙය එසේ විය හැකි නමුත් CentOS එකම අනුවාදකරණ ක්‍රමයක් අනුගමනය නොකරනු ඇත.

CentOS 7.6.1810 සමඟ එන Coreutils හි අනුවාදය:

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

ස්ථාපනය කර ඇති dd අනුවාදය:

[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.

මෙය 8.22 අනුවාද පෙන්වයි .

කෙසේ වෙතත්, මම සෙන්ටොස් 7.5 සහ සෙන්ටොස් 7.6 යන දෙවර්ගයේම (කොරියුටිල්ස් හි 8.22 අනුවාදය සමඟ) ඩීඩී සමඟ 'තත්වය = ප්‍රගතිය' පරීක්ෂා කර ඇති අතර එය නිසියාකාරව ක්‍රියාත්මක වේ.

රෙඩ්හැට් එවැනි පැරණි කොරියුටිල්ස් අනුවාදයක් භාවිතා කිරීමට තෝරාගත්තේ ඇයිදැයි මම නොදනිමි, නමුත් ක්‍රියාකාරීත්වය පවතින්නේ 8.22 සමඟ ය.


1

ඉහත සඳහන් කළ පරිදි, අවම වශයෙන් GNU coreutils, හෝ කාර්යබහුල පෙට්ටියේ 'dd' සමඟ, එය USR1 සං signal ාවකට ප්‍රතිචාර දක්වනුයේ ප්‍රගති තොරතුරු stderr වෙත මුද්‍රණය කිරීමෙනි.

මම ඩීඩී සඳහා කුඩා ආවරණ ස්ක්‍රිප්ට් එකක් ලියා ඇති අතර එය හොඳ ප්‍රතිශතයක් සහිත සම්පූර්ණ දර්ශකයක් පෙන්වන අතර ඩීඩීගේ ක්‍රියාවලියට හෝ කිසිදු ආකාරයකින් ක්‍රියා කිරීමට බාධා නොකිරීමට උත්සාහ කරයි. ඔබට එය ගිතුබ් වෙතින් සොයාගත හැකිය:

http://github.com/delt01/dd_printpercent

අවාසනාවකට මෙන්, මෙම SIGUSR1 උපක්‍රමය ක්‍රියාත්මක වන්නේ GNU dd (coreutils පැකේජයෙන්) හෝ කාර්යබහුල පෙට්ටියේ 'dd' මාදිලිය සමඟ පමණි. FreeBSD සහ OS X ඇතුළුව බොහෝ BSD පද්ධති සමඟ ඇතුළත් කර ඇති 'dd' තොගය සමඟ එය ක්‍රියා නොකරයි ... :(


සබැඳිය මිය ගොස් ඇත.
ishmael

1

ඕනෑම කොරුටිල්ස් වැඩසටහනක ප්‍රගතිය ඔබට නැරඹිය හැකිය progress - Coreutils Progress Viewer.

එය නිරීක්ෂණය කළ හැකිය:

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 unlzma 7z 7za zcat bzcat lzma

ඔබට මෑන් පිටුව බලන්න පුළුවන්

විධානය ක්‍රියාත්මක වන විට ඔබට එය වෙනම පර්යන්ත කවුළුවක භාවිතා කළ හැකිය, නැතහොත් dd විධානය සමඟ එය දියත් කරන්න:

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

මෙන්න &පළමු විධානය ලබා දී විධානය අවසන් වන තෙක් බලා සිටීම වෙනුවට වහාම ඉදිරියට යයි.

ප්‍රගති විධානය දියත් කරනු ලබන්නේ: -mඑබැවින් -pඅධීක්ෂණ ක්‍රියාවලිය අවසන් වන තෙක් එය බලා සිටින අතර, එමඟින් එය ලබා දී ඇති පිත්තක් අධීක්ෂණය කරන $!අතර අවසාන විධාන pid වේ.

ඔබ සුඩෝ සමඟ ඩීඩී නිකුත් කරන්නේ නම්, ඔබ ද ප්‍රගතිය සමඟ කළ යුතුය:

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.