[英]Linux, Bash execute commands in script after spawned process has ended
編寫一個小的bash腳本。 我有一個命令,該命令可以生成一個進程,然后返回,從而使生成的進程繼續運行。 我需要等待生成的進程終止,然后運行一些命令。 我怎樣才能做到這一點?
具體情況是:
VBoxManage startvm "my_vm"
#when my_vm closes
do_things
但是,我之前在其他情況下都曾遇到過此問題,因此,如果可能的話,我正在尋找一種通用的解決方案,而不僅僅是與virtualbox vm相關的解決方案。
我有一個答案,它不是很漂亮
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”。
悲痛的是,這樣做需要比在左視野之外執行命令選項產生的副作用更好的方法。 還有更好的答案嗎? 請....
不幸的是,我認為您不能將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
希望您可以根據自己的特定需求進行調整。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.