运行单个命令可以工作但不能在shell脚本中组合时使用。为什么?

时间:2012-07-19 16:58:18

标签: shell mount

我需要在shell脚本中运行以下命令集

modprobe nbd
sudo qemu-nbd -c /dev/nbd0 path/to/image/file
sudo mount /dev/nbd0p1 /mnt/temp
python copyFiles.py
sudo umount /mnt/temp
sudo qemu-nbd -d /dev/nbd0
sudo rmmod nbd

当我单独运行这些命令时,它工作正常,但当我将它们放入shell脚本并执行该shell脚本时,我总是在mount命令中出错。

所以我在sleep 1之前投了mount,它按预期工作。

这背后的原因是什么? (某种异步呼叫注册延迟/竞争条件?)

2 个答案:

答案 0 :(得分:0)

mount和上一个命令都需要升级的权限。当mount尝试运行时,它是否会导致上一个命令中的锁仍然存在?

答案 1 :(得分:0)

  

挂载错误:挂载点/ mnt / temp不存在

因此,当您将目录/mnt/temp作为shell脚本运行时,它似乎不存在。只需创建它或在mount命令之前的某个地方添加它:

mkdir /mnt/temp 2>&1 /dev/null