我添加了几个带有 Ubuntu 18.04 的虚拟机管理程序,并添加了适用于 16.04 和 14.04 的脚本。
其中包括一些安装在用户crontab中的脚本。
以下是脚本的一部分。
virsh list | grep $1
if [ $? -ne 0 ]; then
log "Start VM: $1"
virsh start $1
else
log "VM already running: $1"
fi
日志显示,从用户 crontab 运行时,virsh 列表为空。它从命令行和从 root crontab 运行。
有人知道如何让它在 Ubuntu 18.04 中从用户 crontab 运行吗?
答案1
最好直接测试 grep。
d=${1:?Missing name argument}
if ! virsh -c qemu:///system list | \
grep -Eq "\ +${d}\ +running$"
then
log "Start VM: $1"
virsh start "$1"
else
log "VM already running: $1"
fi
答案2
我也无法让cron
脚本列出任何虚拟机。
根据评论中的@johnny-haugen-sørgård 的正确答案
找到了解决方案:在 ubuntu 18.04 上从用户 crontab 运行的 virsh 未自动连接到本地 kvm,因此工作命令是:virsh -c qemu:///system list
因此,脚本的第一行应该是:
virsh -c qemu:///system list | grep $1