Функция dd, похоже, зависает после завершения

Функция dd, похоже, зависает после завершения

Я пытаюсь скопировать ISO-образ на USB-накопитель с помощью этой команды:

sudo dd bs=4M if=lubuntu-17.04-desktop-amd64.iso of=/dev/sdc status=progress 

Что довольно прямолинейно. ISO имеет размер 912M. Почему выводимый текст здесь застывает вместо завершения программы?

956301312 bytes (956 MB, 912 MiB) copied, 11.216 s, 85.3 MB/s

Я даже не могу остановить запуск программы с ctr-c.

решение1

Поведение, которое вы видите, заключается только в ddсинхронизации данных на диске после операции. Для оптимизации операций ввода-вывода Linux часто считывает данные большими порциями, чем запрашивалось (упреждающее чтение), и откладывает запись, чтобы их можно было объединить (грязный кэш). В конце операции либо ddсинхронизирует файл на диске, либо ядро ​​делает это неявно, и процесс остается активным, пока не будут завершены все записи.

Если на машине нет других массовых операций ввода-вывода, вы сможете оценить, сколько данных осталось записать, посмотрев на значение «Dirty:» /proc/meminfo— это общий объем данных, ожидающих записи на диск.

Количество данных, которые система может оставить незаписанными в памяти в любой момент времени, можно контролировать с помощью следующих ручек настройки sysctl. По умолчанию используются только соотношения. Вы можете определить значение в процентах (соотношение) или байтах.

vm.dirty_background_ratio
vm.dirty_ratio
vm.dirty_background_bytes
vm.dirty_bytes

Официальную документацию по этим параметрам вы найдете здесь:

https://www.kernel.org/doc/Documentation/sysctl/vm.txt

Связанный контент