使用 cron 运行 QEMU 命令

使用 cron 运行 QEMU 命令

我有一台机器,除了其他服务外,还需要运行服务器虚拟机。我正在使用以下程序运行虚拟机:

qemu-system-x86_64 -nographic \
    -enable-kvm \
    -m 8G \
    -smp 2 \
    -hda gw_disk.qcow2

这是脚本start.sh,然后我在根 crontab 上有sudo crontab -e

@reboot cd /disk/folder && setsid ./start.sh

重启后我查看/var/log/syslog并得到了以下信息:

(CRON) INFO (Running @reboot jobs)
(root) CMD (cd /disk/folder && setsid ./start.sh)
(CRON) info (No MTA installed, discarding output)

我找不到该过程ps -o pid,sess,cmd afx | grep qemu

知道我遗漏了什么吗?谢谢

答案1

这里有几件事让我印象深刻

  1. 考虑安装libvirtvirsh或类似的东西,这样你就可以在虚拟机周围有一个管理层

  2. 捕获 crontab 条目的输出。它会告诉您有输出,但无法通过电子邮件发送给您(“信息(未安装 MTA,丢弃输出)“)。您可以将其写入系统记录器或直接写入文件:

    # Direct to a logfile (remember to rotate/truncate it periodically)
    @reboot ( echo "Starting: $(date)"; cd /disk/folder && setsid ./start.sh ) >>/var/log/startvm.log 2>&1
    
    # To the logger subsystem (usually ends up in /var/log/user.log)
    @reboot ( cd /disk/folder && setsid ./start.sh ) 2>&1 | logger -t startvm
    
  3. 考虑使用 systemd 单元来启动进程,而不是启动时 crontab 条目。当然,最初会更复杂,但一旦拥有它,维护起来会更容易,并且具有更好的日志记录和故障报告

    参考:

相关内容