Hi Zbigniew I added the "| logger" b/c i wanted additional proove that the scripts are actually executed, and it seems to work, the start-output is logged into syslog.
But not the ExecStop. I added some more logging and the stop command seems never to be executed. Also, the VMs take time to shutdown, but Xfce just terminate upon shutdown, definitely does not wait until the VBox service is stopped. It might be that systemd terminates the PIDs of the VMs directly, but it's currently not executing the ExecStop ... bet I'm missing something. Cheers Josh -----Ursprüngliche Nachricht----- Von: systemd-devel-bounces+josh=gebaschtel...@lists.freedesktop.org [mailto:systemd-devel-bounces+josh=gebaschtel...@lists.freedesktop.org] Im Auftrag von Zbigniew Jedrzejewski-Szmek Gesendet: Sonntag, 4. Dezember 2011 18:28 An: systemd-devel@lists.freedesktop.org Betreff: Re: [systemd-devel] FC16 - how to get ExecStop= to be executed at shutdown? On 12/04/2011 03:53 PM, Josh Geisser wrote: Hi, > I succeeded with auto login and auto start of my Virtual Boxes, but could not > get them to do a proper shutdown. > > Because of the nature of the VM processes I want to send them a proper ACPI > shutdown button instead of terminating the process, which is done through my > old rc-script. > > The VirtualBoxes process are started AFTER X11 is up, but must also be > shutdown BEFORE the display-manager is exited. > > How do I configure this in the service file? You already have this property, because After is reversed during shutdown. From systemd.unit(5): Note that when two units with an ordering dependency between them are shut down, the inverse of the start-up order is applied. i.e. if a unit is configured with After= on another unit, the former is stopped before the latter if both are shut down. > > My /lib/systemd/system/vbox.service: > > [Unit] > Description=Virtual Box Machines > After=vboxdrv.service network.target display-manager.service > > [Service] > Type=forking > ExecStart=/home/vmuser/./rc.virtualboxes start | /usr/bin/logger > ExecStop=/home/vmuser/./rc.virtualboxes stop | /usr/bin/logger Those two lines are wrong. ExecStart is justed exec()ed, not through the shell. What happens here, is that the script gets three arguments "start", "|", "/usr/bin/logger". It likely ignores everything but $1, so it seems to work. You might use StandardOutput= (see systemd.exec(5)), or just leave the redirection out entirely, it is now the default to redirect stdout to syslog. Best, Zbyszek > [Install] > WantedBy=graphical.target > > > Cheers& thx > Josh > _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- ---- ASG at hnet _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel