从用户 crontab 运行时 virsh 列表为空

从用户 crontab 运行时 virsh 列表为空

我添加了几个带有 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

相关内容