此脚本创建10个图像文件,并复制文件(S)给他们。
#!/bin/bash
# script to create multiple floppy images for installing hwp30
#+on virtualbox.
# umount image in case mounted
sudo umount /media/floppy
# create ten blank 2.88mb images.
#+then mount each image and copy over file(s).
for n in {1..10}; do
mkfs.msdos -C "hwp30-${n}.img" 2880
sudo mount -o loop "hwp30-${n}.img" /media/floppy
sudo cp -v "../DISK${n}" /media/floppy
# if first disk then copy over INSTALL.EXE
if [[ $n -eq 1 ]]; then
sudo cp -v ../INSTALL* /media/floppy
fi
sudo umount /media/floppy
done
# done?
if [[ $? -eq 0 ]]; then
echo "done!"
fi当我运行这个脚本时,文件的挂载、复制和umounting都是同步的out ;它们没有按照正确的顺序完成。乌蒙曾说过“设备很忙”几次。
脚本完成后,我需要执行几次umount命令来汇总它们(即使它是相同的挂载点?)。
我认为这被称为race条件。怎么修?
发布于 2021-08-01 06:47:00
问题可能是,即使副本已经完成,它仍然是IO从缓存到挂载映像。
将sync; sync添加到sudo umount /media/floppy行前面。这将请求刷新未写入的数据,并等待其发生。
https://askubuntu.com/questions/1355278
复制相似问题