sc2*_*joe 3 centos virtualbox services
我不完全确定我正在尝试做的事情是否可行。我想将 vbox 虚拟机作为服务运行并在启动时启用它。这是我的 .service 脚本:
[Unit]
Description=Virtualbox Headless VM
Wants=network-online.target
After=network-online.target
[Service]
Type=forking
ExecStart=/usr/bin/VBoxHeadless -s vbox_uuid
ExecStop=/usr/bin/VBoxManage controlvm vbox_uuid poweroff
User=myuser
[Install]
WantedBy=muti-user.target
Run Code Online (Sandbox Code Playgroud)
当我尝试正常启动时,我的 cli 挂起并且不会分叉该过程。有人有任何想法/想法/建议吗?
systemctl status 给了我这个:
Jun 20 07:17:07 localhost.localdomain systemd[1]: Starting Virtualbox Headless VM...
Jun 20 07:17:09 localhost.localdomain pulseaudio[4143]: [pulseaudio] socket-server.c: bind(): Address already in use
Jun 20 07:17:09 localhost.localdomain pulseaudio[4143]: [pulseaudio] module.c: Failed to load module "module-esound-protocol-unix" (argument: ""): initialization failed.
Jun 20 07:17:09 localhost.localdomain pulseaudio[4143]: [pulseaudio] main.c: Module load failed.
Jun 20 07:17:09 localhost.localdomain pulseaudio[4143]: [pulseaudio] main.c: Failed to initialize daemon.
Jun 20 07:17:09 localhost.localdomain pulseaudio[4140]: [pulseaudio] main.c: Daemon startup failed.
Jun 20 07:18:37 localhost.localdomain systemd[1]: vboxmachines.service operation timed out. Terminating.
Jun 20 07:18:37 localhost.localdomain systemd[1]: Failed to start Virtualbox Headless VM.
Jun 20 07:18:37 localhost.localdomain systemd[1]: Unit vboxmachines.service entered failed state.
Run Code Online (Sandbox Code Playgroud)
谢谢!
您的就绪协议不匹配。
该Type
服务是很重要的。该设置表示 systemd 期望服务说话的准备协议。一个simple
服务被认为是立即准备。一个forking
服务被认为其初始过程派生一个子项,然后退出后要准备好。一个dbus
服务被认为当一个服务器出现在桌面总线做好准备。等等。
如果您没有获得服务单元中声明的准备协议以匹配服务所做的事情,那么事情就会出错。就绪协议不匹配会导致服务无法正确启动,或者(更常见的是)被 systemd(错误)诊断为失败。当服务因就绪协议从未触发而被视为无法启动时,systemd 可确保服务的每个孤立的额外进程(从故障的角度来看)都被终止运行,以便将服务正确恢复到非活动状态。
VBoxHeadless
不会(无用地)分叉并退出。VirtualBox doco 明确说明了这一点。因此,您的服务单元中的正确设置是Type=simple
.
顺便说一下,我们其他人可以通过StackOverflow上的后续帖子将您的服务单位的出身追溯到这个匿名帖子到 ArchLinux 论坛,因为您已经复制了匿名人员在那里犯的拼写错误。正确的拼写是。两年半(和 2170 次观看)没有被发现。毫无疑问,这也是你的下一个问题。WantedBy=multi-user.target
Arch Linux wiki 中的模板服务单元,它在虚拟机的 UUID 上参数化,是要走的路,在这里。
归档时间: |
|
查看次数: |
6462 次 |
最近记录: |