使用Java ProcessBuilder创建文件系统时出错

时间:2016-06-09 16:37:34

标签: java shell debian processbuilder

我想在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行并继续手动运行。如果我从命令提示符手动运行批处理,它也可以正常工作。

有没有人知道为什么我会出现这种行为?

0 个答案:

没有答案