Запуск простого сценария во время сна/приостановки

dd bs=1 очень неэффективен, так как выполняет один read()и один write()системный вызов на байт. В любом случае не имеет особого смысла использовать ddна блочном устройстве (, если только вы не хотите использовать специальные флаги, такие как conv=noerror,sync..., для обработки ошибок или смещений )

.

Здесь можно сделать:

offset=$(($(cat /sys/class/block/sda3/start) * 512)) &&
 pv -trabSs "$offset" < myfile > /dev/sda

(или используйте head -c "$offset", если вам не нужна информация о ходе выполнения ).

pvи headвыберут подходящий размер буфера для оптимизации производительности.

(обратите внимание, что, поскольку вы записываете данные в начало диска, вы фактически перезаписываете таблицу разделов! ).

Другой альтернативой может быть создание нового блочного устройства, отображающего только те разделы /dev/sda, которые вы хотите перезаписать

Нравится:

echo "0 $(cat /sys/class/block/sda3/start) linear /dev/sda 0" |
  dmsetup create writable_sda &&
cp myfile /dev/mapper/writable_sda
0
25.11.2019, 01:07
1 ответ

Невозможно выполнить что-либо на уровне ОС, пока машина находится в спящем режиме, это, в первую очередь, противоречит цели ее спящего режима.

0
28.01.2020, 03:05

Теги

Похожие вопросы