>>> "Ulrich Windl" <Ulrich.Windl@xxxxxxxxxxxxxxxxxxxx> schrieb am 02.09.2022 um 10:12 in Nachricht <6311BAFE020000A10004D56E@xxxxxxxxxxxxxxxxxxxxxxxx>: > Hi! > > The other thing that came to my mind was the ASCI power button: The system Time for the week-end: s/ASCI/ACPI/ > 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 <gmane@xxxxxxxxxxxxxx> schrieb am 01.09.2022 um 21:30 in > Nachricht <ter17r$16vf$1@xxxxxxxxxxxxx>: >> 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.sl > i >> 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.sl > i >> 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.sl > i >> 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/