我试图让几个 VirtualBox 映像在启动时自动启动,并在主机关闭前正确关闭。我有一个 bash 脚本,/usr/local/bin/vmctl.sh它使用对 VBoxManage 的调用来处理启动和停止来宾图像。start 调用非常简单 - 它只是遍历图像列表并调用VBoxManage startvm --type headless "<imgname>"然后退出 0。stop 调用循环遍历列表并调用VBoxManage controlvm "<imgname>" acpipowerbutton然后循环直到VBoxManage list runningvms返回一个空列表或在退出 0 之前经过 60 秒。运行脚本命令行完美运行。
我在以下位置设置了一个单元文件/lib/systemd/system/vmctl.service:
[Unit]
Description=VirtualBox Control
After=virtualbox.service
[Service]
ExecStart=/usr/local/bin/vmctl.sh start
ExecStop=/usr/local/bin/vmctl.sh stop
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
当我运行时systemctl start vmctl.service,它会同时调用开始和停止线。当我打电话时systemctl stop vmctl.service,系统日志中有一个条目指出Stopped VirtualBox Control但它没有做任何事情。
我是 systemd 的新手。我最近将这个 Ubuntu 盒子升级到 16.04。我很确定对于我没有看到的这种行为有一个简单的解释。
谢谢!
根据马克的建议更新:
我使用systemd-analyze verify /etc/systemd/system/vmctl.service(将文件移到那里后 - 感谢提示)确认了语法。然后我按照您的建议更改了 ExecStart 和 ExecStop ,运行systemctl …