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

Не удалось найти файл. Это другое сообщение об ошибке; сравните сcat /does-not-exist(на самом деле catне найдя,не оболочка )илиecho > /path/does/not/exist(оболочка не находит ее):

$ echo > /path/does/not/exist
bash: /path/does/not/exist: No such file or directory

Скорее всего, вместо этого вы получите ENODEVили ENXIO, см.man 2 open.strace(по делу cat)мог бы вам точно сказать. Здесь я получаюENXIO:

$ ls -l 3
lrwx------. 1 anthony anthony 64 Sep 10 17:39 3 -> 'socket:[11714498]'

$ strace -e open,openat -f cat 3
⋮
openat(AT_FDCWD, "3", O_RDONLY)         = -1 ENXIO (No such device or address)
⋮

1
22.11.2021, 02:28
2 ответа

Я бы попробовал с ddи oflag=direct status=progress. Имейте в виду, что это может стать медленным.

Попробуйте:

dd oflag=direct status=progress bs=16M if=file.bin of=/dev/sdb1

Работа должна быть выполнена, как задумано.

0
22.11.2021, 11:32

syncсwatch-flush

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

Одним из способов является запуск сброса буфера (с )с помощью sync, когда процесс записи завершен, и отслеживание размера буферов. Я использую шелл-скрипт watch-flushдля контроля размера буферов, «грязных» данных, как указано в grep Dirty: /proc/meminfo, и когда syncзаканчивается, вы знаете, что данные полностью записаны на диск.

Вы можете найти watch-flushсреди шелл-скриптов, принадлежащихmkusb , и вы можете использовать его как есть, модифицировать его или просто позаимствовать концепцию и создать свой собственный инструмент.

ddсfsync

Альтернативой, если вы хотите использовать dd, является использование conv=fsyncв соответствии с

При записи ISO-образа на USB-накопитель с помощью dd, как я узнаю, что могу извлечь флешку?

1
22.11.2021, 15:17

Теги

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