Для заданий, которые выполняются однажды, at
уже делает точно, чего Вы требуете. В любое время, atd
выполнит все запланированные задания, которые проходят их запланированные даты. В частности, во время начальной загрузки, начиная atd
инициировал выполнение любого задания, дата которого стала должной в течение времени простоя.
Для периодических заданий Вы могли объединить установленный график crontab запись и @reboot
запись crontab. В @reboot
запись, только выполните задачу, если она не была сделана за прошлые 24 часа (или безотносительно интервала, Вы предпочитаете).
42 5 * * * /usr/local/bin/myjob && touch /var/myjob/done
@reboot if [ -z "$(find /var/myjob.done -mtime 1)" ]; then /usr/local/bin/myjob && touch /var/myjob/done; fi
# losetup --find --show --partscan --read-only 2013-02-09-wheezy-raspbian.img
/dev/loop7
# dd if=/dev/loop7p2 of=/dev/narnia bs=1M
Если --partscan
не работает, можно также использовать один из:
# partx -a /dev/loop7
# kpartx /dev/loop7
или подобные решения для отображения раздела.
Необходимо, вероятно, смонтировать его сначала только, чтобы видеть, является ли это правильная вещь или что.
Конечно, можно также считать вывод fdisk и дать dd
skip=131072
или безотносительно непосредственно, т.е. заставляют его пропустить это много блоков входа, таким образом, это начинает читать в том, где раздел расположен; но более хорошо видеть фактические разделы с циклическим устройством.
Что-то вроде этого должно работать:
dd if=/path/to/2013-02-09-wheezy-raspbian.img2 of=/dev/sdc2 bs=4096 conv=notrunc,noerror
если = устанавливает изображение, Вы хотите клонироваться
из = устанавливает целевой раздел, где Вы хотите клонировать изображение
dd: opening ‘2013-02-09-wheezy-raspbian.img2’: No such file or directory
– JamesTheAwesomeDude
21.04.2013, 01:31
losetup -fP yourImage.img
dd
, вы можете сделать dd if = / dev / loop0p1 of = image.img
, но я думаю, что вам бы больше понравился cat
. В корневой оболочке просто выполните cat / dev / loop0p1> image.img
. В обоих примерах предполагается, что вам нужен первый раздел, а назначенное вам устройство обратной петли было / dev / loop0
losetup -d / dev / loop0
. Еще раз, это предполагает, что / dev / loop0
является вашим устройством обратной связи. Вы можете сделать:
sudo partx --add -v 2013-02-09-wheezy-raspbian.img
# time sudo dd if=/dev/loop0p1 |pv -s 80M |sudo dd of=/dev/sdc1
time sudo dd if=/dev/loop0p2 |pv -s 4G |sudo dd of=/dev/sdc2
sudo partx --delete -v /dev/loop0
Вы можете скопировать только второй раздел в отдельный образ с помощью этого
dd if=2013-02-09-wheezy-raspbian.img of=second.img bs=512 skip=122880
и после этого можно скопировать вместо раздела на диске
dd if=second.img of=/dev/sdc2 bs=512
или даже одной командой
dd if=2013-02-09-wheezy-raspbian.img of=/dev/sdc2 bs=512 skip=122880
Просто убедитесь, что вы размонтировали /dev/sdc2 перед записью в него.
losetup
команда не работала - она сказала нераспознанную опцию--find
. Я удалил это, это сказало, что не распознало--show
. Взлетание, которое заставило это жаловаться на--partscan
, в которой точке я понял, что команда не собиралась делать что-либо для меня в ближайшее время. Я решил попробовать другие, но обоихpartx
иkpartx
возвратите "команду, не найденную". – JamesTheAwesomeDude 21.04.2013, 01:45dd if=2013-02-09-wheezy-raspbian.img of=/dev/sdc skip=122880
, но это возвращаетсяdd: ‘2013-02-09-wheezy-raspbian.img’: cannot skip: Invalid argument
. – JamesTheAwesomeDude 21.04.2013, 01:49skip
зависит отbs
, таким образом, если Вы использовалиbs=1M
(или имейте псевдоним, который делает это), это объяснило бы, почему он не работает. попробуйтеbs=512
. Кроме того, почему 122880, когда fdisk говорит 131072? Также мой losetuplosetup from util-linux 2.22.2
. то же для partx. kpartx от многопутевых инструментов (используемый картопостроитель устройства). – frostschutz 21.04.2013, 02:49kpartx
для LVM.partprobe
также сделает задание, от разделенного пакета. – psusi 21.04.2013, 05:18