我有一个 KVM 虚拟机,它在随机时间自行关闭。在我修复它之前,我必须保持它正常运行。
我通过执行命令 virsh dominfo kvm110
知道虚拟机是否正在运行。输出:
[root@dal01 ~]# virsh dominfo kvm110
Id: 54
Name: kvm110
UUID: ea136d63-4806-4d8c-a9b3-7b9f412552c3
OS Type: hvm
State: running
CPU(s): 7
CPU time: 885.4s
Max memory: 10485760 KiB
Used memory: 10485760 KiB
Persistent: no
Autostart: disable
Managed save: no
Security model: none
Security DOI: 0
我想制作一个脚本,每秒执行上述命令,读取行State: running
,然后根据 2 种可能的替代方案执行以下操作,运行和不运行。我没有 SH 或 Bash 的编码经验,但我想脚本会是这样简单的:
def check():
if "status" = "running" :
running = true
print ("VM is running")
else:
print ("VM is NOT running") + print time.localtime() #prints timestamp
run command "virsh start kvm110"
check()
我没有包括脚本运行virsh dominfo kvm110
并从中解析State:
行的部分,因为我不知道该怎么做。
有人可以帮助我吗?
使用 grep
.如果它匹配其参数,则成功退出(代码 0),否则退出失败(代码 1 或错误为 2)。您可以使用 if
语句测试命令是成功还是失败:
if virsh dominfo kvm110 | grep -q '^State: *running'
then
echo "VM is running"
else
echo "VM is NOT running, " $(date) #prints timestamp
fi
-q
的意思是"安静"。它告诉 grep 不要打印出匹配的文本。