Рейтинг:0

Как избежать состояния гонки при монтировании, копировании файлов и размонтировании образов

флаг dk

Этот сценарий создает десять файлов изображений и копирует в них файлы.

#!/бин/баш
# скрипт для создания нескольких образов дискет для установки hwp30
#+на виртуальном боксе.

# размонтировать образ, если он смонтирован
sudo размонтировать /медиа/дискета

# создать десять пустых изображений размером 2,88 МБ.
#+затем смонтируйте каждый образ и скопируйте файл(ы).
для n в {1..10}; делать
    mkfs.msdos -C "hwp30-${n}.img" 2880
    sudo mount -o loop "hwp30-${n}.img" /media/floppy
    sudo cp -v "../DISK${n}" /носитель/дискета

    # если первый диск, то скопировать INSTALL.EXE
    если [[ $n -eq 1 ]]; тогда
        sudo cp -v ../INSTALL* /носитель/дискета
    фи
    
    sudo размонтировать /медиа/дискета
сделано

# сделано?
если [[$? -экв 0 ]]; тогда
    эхо "сделано!"
фи

Когда я запускаю этот скрипт, происходит монтирование, копирование файлов и размонтирование. не синхронизировано; они не выполняются в правильном порядке. Размонтирование говорит "устройство занято" несколько раз.

После завершения сценария мне нужно сделать размонтировать команда несколько раз, чтобы размонтировать их все (даже если это одна и та же точка монтирования?).

Я думаю, это называется состояние гонки. Как исправить?

Soren A avatar
флаг mx
Вероятно, это происходит из-за того, что в образе все еще есть ввод-вывод, пока кеш опустошается. Попробуйте добавить `sync; sync` непосредственно перед строкой с `sudo umount /media/floppy`. Это запросит сброс незаписанных данных и подождет, пока это произойдет.
Logan Lee avatar
флаг dk
@SorenA, спасибо, это исправлено!
Soren A avatar
флаг mx
Отлично, я добавил это как ответ. Пожалуйста, примите ответ :-)
Рейтинг:2
флаг mx

Проблема может заключаться в том, что, хотя копирование завершено, все еще выполняется ввод-вывод из кэша в смонтированный образ.

Добавлять синхронизировать; синхронизировать непосредственно перед строкой с sudo размонтировать /медиа/дискета.. это запросит сброс незаписанных данных - и подождите, пока это произойдет.

Ответить или комментировать

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