Вынудите dd не кэшироваться или не читать из кэша

Каждый сигнал имеет "расположение по умолчанию" - что процесс делает по умолчанию, когда это получает тот сигнал. Существует таблица в signal(7) страница справочника, перечисляющая их:

Signal     Value     Action   Comment
──────────────────────────────────────────────────────────────────────
...
SIGUSR1   30,10,16    Term    User-defined signal 1
SIGUSR2   31,12,17    Term    User-defined signal 2

SIGUSR1 и SIGUSR2 у обоих есть действие по умолчанию Term - процесс завершается. dd регистрирует обработчик, чтобы прервать сигнал и сделать что-то полезное с ним, но если Вы предупреждаете слишком быстро, что это не имело времени для регистрации того обработчика все же, таким образом, действие по умолчанию происходит вместо этого

23
13.07.2013, 02:47
3 ответа

Вы могли попробовать

sync
echo 3 > /proc/sys/vm/drop_caches

который отбрасывает все виды кэшей.

Для получения дополнительной информации посмотрите /usr/src/linux/Documentation/sysctl/vm.txt на drop_caches.

(Примечание: вопрос был о busybox dd, который до настоящего времени все еще не поддерживает iflag=direct.)

11
27.01.2020, 19:42
  • 1
    машины Просто примечание: тот единственные работы с Linux. Кроме того, /proc файловая система отключена в некоторых встроенных конфигурациях Linux. –   12.07.2013, 23:28
  • 2
    @EvanTeitelman, Это, кажется, работает здесь, хотя, таким образом, я иду в upvote и принимаю этот ответ. –  ardent 12.07.2013, 23:40
  • 3
    я задался вопросом, имеет ли это некогда от эффекта, или продолжается. Согласно этому, эффект некогда прочь. –  Craig McQueen 07.02.2017, 06:10

Прямой ввод-вывод (открывают режим O_DIRECT) должен работать, но Ваше ядро и/или dd может не поддерживать его.

8
27.01.2020, 19:42
  • 1
    Это - правильный ответ: dd, если =/dev/device iflag=direct bs=1M; это не влияет на кэш считывания. –  Ole Tange 04.02.2017, 22:42
  • 2
    @OleTange: Почему Вы не отправляете это как свой собственный ответ затем? Это - хит № 1 на Google для "dd никакой кэш", и фактический корректный ответ находится в комментарии к некоторому непринятому ответу... –  mic_e 11.10.2017, 13:41

Небольшой штрих к ответу iflag=direct; предоставить также индикатор выполнения:

dd iflag=direct if=~/source.iso | pv | dd oflag=direct of=/dev/sdb bs=8M

Без флага iflag/offlag pv сообщает о завершении, а затем выглядит так, как будто он завис; но dd к устройству все еще работает на кеше.

10
27.01.2020, 19:42

Теги

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