Способ более общего назначения ограничить ЦП состоит в том, чтобы использовать /sys
. Это походит на то, кроме чего Вы хотите так или иначе начиная с вещей tar
способны к выполнению в вычислительном отношении дорогих задач, его просто, что Вы видите tar
сделайте это больше всего.
Способ сделать это к:
/sys/devices/system/cpu/cpuX/cpufreq
для каждого из Ваших центральных процессоров (замена cpuX
с каждым CPU).scaling_available_frequencies
видеть что частоты Ваши поддержки ЦП.echo 1234567 > scaling_max_freq
Это предотвратит ЦП от когда-либо выхода за предел указанной частоты.
Можно использовать cmp
для проверки, если все было скопировано прекрасное:
$ cmp -n `stat -c '%s' debian-X-netinst.iso` debian-X-netinst.iso /dev/sdX
Это решение явно не вычисляет контрольную сумму Вашего /dev/sdX
- но Вы не должны делать этого, потому что Вы уже сделали это для источника сравнения (т.е. debian-X-netinst.iso
).
Выполнение просто a dd if=/dev/sdX | sha1sum
может привести к не сочетающейся контрольной сумме просто, потому что Вы получаете запаздывание блоков (/dev/sdX
скорее всего, больше, чем изофайл).
Через cmp -n
Вы удостоверяетесь что никакие запаздывающие байты на Вашем /dev/sdX
сравнены.
Если Вы параноики о качестве Вашего устройства массового хранения USB, Вы звоните sync
, извлеките его, повторно вставьте его и затем сделайте сравнение - еще все или некоторые блоки могут просто прибыть из ядер VM (кэш) - когда в действительности, возможно, биты на аппаратных средствах завинчены.
На основе @Kyle ответа Jones
diff <(md5sum debian-XYZ-netinst.iso | awk '{print $1}') <(dd if=/dev/sdX | md5sum | awk '{print $1}')
необходимо использовать md5sum
потому что это быстрее, чем sha1sum
(это сэкономит время при проверке большого файла),
md5sum
по крайней мере вдвое более быстро? Это должно быть, так как OP уже имеет sha1sum
от сайта для скачивания и не должен вычислять это. И чтение из USB будет ограничивающим фактором не sha1/md5 вычисление.
– Anthon
12.05.2013, 08:20
Достаточно просто использовать dd
и md5sum
/ sha1sum
, но, как было сказано ранее , будьте осторожны, размер вашего устройства отличается от размера файла, поэтому суммы будут отличаться.
Вот как вы все еще можете это сделать.
Сначала вам нужно знать размер файла:
$ stat -c '%s' debian-live-8.2.0-amd64-lxde-desktop.iso
1003487232
Затем, чтобы не терять терпение в своих системных вызовах, вам лучше получить это как множитель хорошей мощности два типа 4096
, умножение двух ДОЛЖНО дать точный размер файла, другими способами вы будете проверять слишком мало или слишком много байтов, давая неверную контрольную сумму.
$ bc
bc 1.06.95
scale = 9
1003487232 / 4096
244992.000000000
Я счастлив, 4096 × 244992 = 1003487232
, поэтому 4096 подходит для меня (и, вероятно, будет для вас), поэтому я могу использовать размер блока 4096
( типичный) и количество блоков 244992
.
Не забудьте записать файл на USB-ключ ...
$ dd if=debian-live-8.2.0-amd64-lxde-desktop.iso of=/dev/sd? && sync
И знайте, используя известный размер блока и количество блоков, вы можете прочитать точное количество байтов с ключа и проверить их:
$ dd if=/dev/sdb bs=4096 count=244992 | sha1sum
b0dbe4ca8f526d1e43555459c538607d4a987184
(Да md5sum
намного быстрее, чем sha1sum
, но это явно не ваше узкое место, узким местом является пропускная способность USB, спасибо за внимание).
Или, вкратце:
dd if=/dev/sdb bs=4096 count=$(($(stat -c '%s' the.iso) / 4096)) | sha1sum
Ответ Жюльена справляется с задачей, но есть более простой и быстрый способ:
sudo head -c <image size> /dev/sdX | sha1sum