Hi! The other thing that came to my mind was the ASCI power button: The system might actually block or ignore it (or asking for the admin password). So I think it would be a good idea to have a "second line of defense" causing a hard stop (power off) if the first method fails within a reasonable timeout. That's how cluster VM resources are managed, typically.
Regards, Ulrich >>> Colin Guthrie <gm...@colin.guthr.ie> schrieb am 01.09.2022 um 21:30 in Nachricht <ter17r$16vf$1...@ciao.gmane.io>: > Hi, > > When you have an ExecStop, it's meant to synchronously stop all > processes. Anything left once it exits, systemd considers fair game for > killing! > > So chances are, the ExecStop runs and tells the machine the power button > was pressed. This command exits almost immediately and before the > machine gets much of a chance to process it, systemd goes on a killing > spree to tidy up what's left. > > So you may need some kind of synchronous version of the stop command > which waits a bit with it's own timeout. You can likely knock up a > script in bash pretty easily. Here's a snippet you can adapt from a > script (non-systemd) I use for managing VMs which would allow you to > implement a controlled shutdown with a timeout. > > There may be other issues at play but this is definitely one of them!! > > (other problems may include some processes being are user wide if you > and used by multiple VMs but will get lumped in the cgroup with the > first one you start and thus may be killed when it is powered off even > if other VMs are still running!) > > HTHs > > Col > > > VM_NAME="RHEL7" > > function isrunning() > { > VBoxManage list runningvms | grep -q "$VM_NAME" && echo yes || echo no > } > function stop() > { > if [ "yes" != $(isrunning) ]; then > echo "Not running" > else > VBoxManage controlvm "$VM_NAME" acpipowerbutton > TIMEOUT=60 > echo -n "Waiting for shutdown" > while [ "yes" = $(isrunning) ]; do > echo -n "." > sleep 1 > if [ 0 -eq $TIMEOUT ]; then > echo > echo "Timeout waiting for shutdown :-(" >&2 > echo "Continuing with forced poweroff" > VBoxManage controlvm "$VM_NAME" poweroff > TIMEOUT=10 > fi > TIMEOUT=$(( $TIMEOUT - 1 )) > done > echo > fi > } > > > Sergio Belkin wrote on 01/09/2022 18:59: >> I,m triying to configure an user-level unit for a VirtualBox VM, but it >> does not work well, when I stop, it complains: >> >> systemctl --user status vbox_vm_start@RHEL7.service >> ○ vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7 >> Loaded: loaded >> (/home/sergio/.config/systemd/user/vbox_vm_start@.service; enabled; >> vendor preset: disabled) >> Active: inactive (dead) since Thu 2022-09-01 14:21:57 -03; 5s ago >> Process: 378373 ExecStart=/usr/bin/VBoxManage startvm RHEL7 --type >> headless (code=exited, status=0/SUCCESS) >> Process: 378581 ExecStop=/usr/bin/VBoxManage controlvm RHEL7 >> acpipowerbutton (code=exited, status=0/SUCCESS) >> Tasks: 40 (limit: 38236) >> Memory: 23.6M >> CPU: 8.114s >> CGroup: >> > /user.slice/user-1000.slice/user@1000.service/app.slice/app-vbox_vm_start.sli > ce/vbox_vm_start@RHEL7.service >> ├─ 378386 /usr/lib/virtualbox/VBoxXPCOMIPCD >> ├─ 378392 /usr/lib/virtualbox/VBoxSVC --auto-shutdown >> └─ 378442 /usr/lib/virtualbox/VBoxHeadless --comment RHEL7 >> --startvm f02a9f08-2ff2-4a92-b3cd-a8dfb17513c6 --vrde config >> >> sep 01 14:21:51 munster.belkin.home systemd[3452]: Starting >> vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7... >> sep 01 14:21:51 munster.belkin.home VBoxManage[378373]: Waiting for VM >> "RHEL7" to power on... >> sep 01 14:21:51 munster.belkin.home VBoxManage[378373]: VM "RHEL7" has >> been successfully started. >> sep 01 14:21:51 munster.belkin.home systemd[3452]: Started >> vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7. >> sep 01 14:21:56 munster.belkin.home systemd[3452]: Stopping >> vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7... >> sep 01 14:21:57 munster.belkin.home systemd[3452]: >> vbox_vm_start@RHEL7.service: Unit process 378386 (VBoxXPCOMIPCD) remains >> running after unit stopped. >> sep 01 14:21:57 munster.belkin.home systemd[3452]: >> vbox_vm_start@RHEL7.service: Unit process 378392 (VBoxSVC) remains >> running after unit stopped. >> sep 01 14:21:57 munster.belkin.home systemd[3452]: >> vbox_vm_start@RHEL7.service: Unit process 378442 (VBoxHeadless) remains >> running after unit stopped. >> sep 01 14:21:57 munster.belkin.home systemd[3452]: Stopped >> vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7. >> sep 01 14:21:57 munster.belkin.home systemd[3452]: >> vbox_vm_start@RHEL7.service: Consumed 3.386s CPU time. >> >> If I try to start, these are the errors: >> >> × vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7 >> Loaded: loaded >> (/home/sergio/.config/systemd/user/vbox_vm_start@.service; enabled; >> vendor preset: disabled) >> Active: failed (Result: exit-code) since Thu 2022-09-01 14:22:06 >> -03; 7s ago >> Process: 378730 ExecStart=/usr/bin/VBoxManage startvm RHEL7 --type >> headless (code=exited, status=1/FAILURE) >> Tasks: 40 (limit: 38236) >> Memory: 25.7M >> CPU: 3.338s >> CGroup: >> > /user.slice/user-1000.slice/user@1000.service/app.slice/app-vbox_vm_start.sli > ce/vbox_vm_start@RHEL7.service >> ├─ 378386 /usr/lib/virtualbox/VBoxXPCOMIPCD >> ├─ 378392 /usr/lib/virtualbox/VBoxSVC --auto-shutdown >> └─ 378442 /usr/lib/virtualbox/VBoxHeadless --comment RHEL7 >> --startvm f02a9f08-2ff2-4a92-b3cd-a8dfb17513c6 --vrde config >> >> sep 01 14:22:06 munster.belkin.home systemd[3452]: Starting >> vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7... >> sep 01 14:22:06 munster.belkin.home VBoxManage[378730]: VBoxManage: >> error: The machine 'RHEL7' is already locked by a session (or being >> locked or unlocked) >> sep 01 14:22:06 munster.belkin.home VBoxManage[378730]: VBoxManage: >> error: Details: code VBOX_E_INVALID_OBJECT_STATE (0x80bb0007), component >> MachineWrap, interface IMachine, callee n> >> sep 01 14:22:06 munster.belkin.home VBoxManage[378730]: VBoxManage: >> error: Context: "LaunchVMProcess(a->session, sessionType.raw(), >> ComSafeArrayAsInParam(aBstrEnv), progress.asOutPar> >> sep 01 14:22:06 munster.belkin.home systemd[3452]: >> vbox_vm_start@RHEL7.service: Control process exited, code=exited, >> status=1/FAILURE >> sep 01 14:22:06 munster.belkin.home systemd[3452]: >> vbox_vm_start@RHEL7.service: Failed with result 'exit-code'. >> sep 01 14:22:06 munster.belkin.home systemd[3452]: >> vbox_vm_start@RHEL7.service: Unit process 378386 (VBoxXPCOMIPCD) remains >> running after unit stopped. >> sep 01 14:22:06 munster.belkin.home systemd[3452]: >> vbox_vm_start@RHEL7.service: Unit process 378392 (VBoxSVC) remains >> running after unit stopped. >> sep 01 14:22:06 munster.belkin.home systemd[3452]: >> vbox_vm_start@RHEL7.service: Unit process 378442 (VBoxHeadless) remains >> running after unit stopped. >> sep 01 14:22:06 munster.belkin.home systemd[3452]: Failed to start >> vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7. >> >> This the unit file: >> × vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7 >> Loaded: loaded >> (/home/sergio/.config/systemd/user/vbox_vm_start@.service; enabled; >> vendor preset: disabled) >> Active: failed (Result: exit-code) since Thu 2022-09-01 14:22:06 >> -03; 7s ago >> Process: 378730 ExecStart=/usr/bin/VBoxManage startvm RHEL7 --type >> headless (code=exited, status=1/FAILURE) >> Tasks: 40 (limit: 38236) >> Memory: 25.7M >> CPU: 3.338s >> CGroup: >> > /user.slice/user-1000.slice/user@1000.service/app.slice/app-vbox_vm_start.sli > ce/vbox_vm_start@RHEL7.service >> ├─ 378386 /usr/lib/virtualbox/VBoxXPCOMIPCD >> ├─ 378392 /usr/lib/virtualbox/VBoxSVC --auto-shutdown >> └─ 378442 /usr/lib/virtualbox/VBoxHeadless --comment RHEL7 >> --startvm f02a9f08-2ff2-4a92-b3cd-a8dfb17513c6 --vrde config >> >> sep 01 14:22:06 munster.belkin.home systemd[3452]: Starting >> vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7... >> sep 01 14:22:06 munster.belkin.home VBoxManage[378730]: VBoxManage: >> error: The machine 'RHEL7' is already locked by a session (or being >> locked or unlocked) >> sep 01 14:22:06 munster.belkin.home VBoxManage[378730]: VBoxManage: >> error: Details: code VBOX_E_INVALID_OBJECT_STATE (0x80bb0007), component >> MachineWrap, interface IMachine, callee n> >> sep 01 14:22:06 munster.belkin.home VBoxManage[378730]: VBoxManage: >> error: Context: "LaunchVMProcess(a->session, sessionType.raw(), >> ComSafeArrayAsInParam(aBstrEnv), progress.asOutPar> >> sep 01 14:22:06 munster.belkin.home systemd[3452]: >> vbox_vm_start@RHEL7.service: Control process exited, code=exited, >> status=1/FAILURE >> sep 01 14:22:06 munster.belkin.home systemd[3452]: >> vbox_vm_start@RHEL7.service: Failed with result 'exit-code'. >> sep 01 14:22:06 munster.belkin.home systemd[3452]: >> vbox_vm_start@RHEL7.service: Unit process 378386 (VBoxXPCOMIPCD) remains >> running after unit stopped. >> sep 01 14:22:06 munster.belkin.home systemd[3452]: >> vbox_vm_start@RHEL7.service: Unit process 378392 (VBoxSVC) remains >> running after unit stopped. >> sep 01 14:22:06 munster.belkin.home systemd[3452]: >> vbox_vm_start@RHEL7.service: Unit process 378442 (VBoxHeadless) remains >> running after unit stopped. >> sep 01 14:22:06 munster.belkin.home systemd[3452]: Failed to start >> vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7. >> >> This is the unit file: >> [Unit] >> Description=VirtualBox VM %i >> After=network.target vboxdrv.service >> Before=runlevel2.target shutdown.target >> >> [Service] >> Type=forking >> Restart=no >> TimeoutSec=5min >> IgnoreSIGPIPE=no >> KillMode=process >> GuessMainPID=no >> RemainAfterExit=no >> >> #ExecStart=/usr/lib/virtualbox/VBoxHeadless --comment RHEL7 --startvm >> f02a9f08-2ff2-4a92-b3cd-a8dfb17513c6 --vrde config >> ExecStart=/usr/bin/VBoxManage startvm %i --type headless >> ExecStop=/usr/bin/VBoxManage controlvm %i acpipowerbutton >> >> [Install] >> WantedBy=default.target >> >> (End of file) >> >> What is the proper way to configure this kind of unit? >> >> Thanks in advance >> >> >> >> -- >> -- >> Sergio Belkin >> LPIC-2 Certified - http://www.lpi.org <http://www.lpi.org> > > > -- > > Colin Guthrie > gmane(at)colin.guthr.ie > http://colin.guthr.ie/ > > Day Job: > Tribalogic Limited http://www.tribalogic.net/ > Open Source: > Mageia Contributor http://www.mageia.org/ > PulseAudio Hacker http://www.pulseaudio.org/ > Trac Hacker http://trac.edgewall.org/