编写一个小的bash脚本。 我有一个生成进程然后返回的命令,让生成的进程继续运行。我需要等待生成的进程终止,然后运行一些命令。我怎么能这样做?
具体案例是:
import_meta_graph()
但是,我之前在其他情况下遇到过这个问题,所以如果可能的话,我正在寻找一个通用的解决方案,而不仅仅是一个与virtualbox vm相关的解决方案。
答案 0 :(得分:0)
我有一个答案,而且不是很好
tail --pid=$pid -f /dev/null
在VBox vm的背景下,以下英雄单行已经证明是成功的。
VBoxManage startvm "my_vm"; tail --pid=$(awk '/Process ID:/ {print $4;}' /path_to/my_vm/Logs/VBox.log) -f /dev/null; echo hello
运行它,我能够看到在my_vm关闭之后才输出'hello'。
好悲伤,需要有一个更好的方法来做到这一点,而不是左场的命令选项的副作用。有更好的答案吗?请....
答案 1 :(得分:0)
不幸的是,我认为您不能将VirtualBox(或任何在后台生成进程的进程)概括为一个通用的解决方案。
这是VirtualBox特定的答案。
正如您所注意到的,VBox在后台运行机器(以及其他一些东西)。但您可以在VBoxManage
查询正在运行的内容:
vm_name="my_vm"
VBoxManage startvm $vm_name
while [[ `VBoxManage list runningvms | grep $vm_name` ]]; do
echo Sleeping ...
sleep 5
done
echo Done!
do_things
希望您可以根据自己的特定需求进行调整。