Как параллелизировать dd?

cronв странице справочника говорится это

крон (8) исследует записи крона один раз в минуту.

таким образом, его разрешение составляет 60 секунд дизайном. У Вас могло быть задание крона, которое называет сценарий несколько раз, но необходимо будет быть осторожными, что задания не начинают перекрывать друг друга в случае, если сценарий занимает больше времени, чем ожидалось.

Если бы Вы действительно должны (сказать), что выполнение каждые 30 секунд, Вы были бы более обеспеченным обертыванием Вашего сценария в цикле и daemonising это. Необходимо будет записать собственную обработку ошибок, поскольку Вы не сможете полагаться cron пользование электронной почтой Вам ошибки больше.

8
11.10.2014, 01:55
2 ответа

Проверено на Бэше:

INFILE=in
seq 0 1000 $((`stat --format %s $INFILE` /100000 )) |
  parallel -k dd if=$INFILE bs=100000 skip={} conv=sparse seek={} count=1000 of=out

Наверное, нужно отрегулировать 1000.

3
27.01.2020, 20:13

Один изготовленный на заказ, неоправданный кода Sniplet:

dd if=oldf conv=sparse bs=1k                 count=3000000000                 of=newf &
dd if=oldf conv=sparse bs=1k skip=3000000000 count=3000000000 seek=3000000000 of=newf &
dd if=oldf conv=sparse bs=1k skip=6000000000 count=3000000000 seek=6000000000 of=newf &
dd if=oldf conv=sparse bs=1k skip=9000000000 count=3000000000 seek=9000000000 of=newf &
wait

Это должно логически разделить файл на четыре чанка 3 ТБ и обрабатывать их параллельно. ( Skip = пропускается через входные блоки; resting = ищет над выходными блоками.) Четвертая команда, конечно, читается до конца старого файла, поэтому COUNT = параметр не является строго необходимым.

2
27.01.2020, 20:13

Теги

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