我想在Debian上使用shell脚本创建一个虚拟光盘(VMDK)。我使用Java ProcessBuilder
执行以下批处理:
脚本1:
dd if=/dev/zero bs=1G count=0 seek=4 of=disc
echo n.p.1...p.w.|sed 's/\./\n/g'|fdisk disc
kpartx -av disc
mkfs.ext3 /dev/mapper/loop0p1
mount /dev/mapper/loop0p1 /mnt/tmp
脚本2:
umount /mnt/tmp
kpartx -dv disc
qemu-img convert -f raw -O vmdk disc new-disc.vmdk
但我在脚本1中遇到问题
mkfs.ext3 /dev/mapper/loop0p1
一旦工作正常 - 文件系统已成功创建,光盘已安装...但每次第二次脚本以错误代码1结束,但没有消息。这两个结果定期更改。
如果我对每个命令使用Java ProcessBuilder
,我会得到相同的结果。一旦它工作,第二次它没有。
如果我在命令之间等待
kpartx -av disc
和
mkfs.ext3 /dev/mapper/loop0p1
它始终正常工作。 “我等”意味着我使用
sleep 1
在shell中,
Thread.sleep(1000);
在java或我把断点放到exec行并继续手动运行。如果我从命令提示符手动运行批处理,它也可以正常工作。
有没有人知道为什么我会出现这种行为?