[systemd-devel] FC16 - how to get ExecStop= to be executed at shutdown?

Zbigniew Jędrzejewski-Szmek zbyszek at in.waw.pl
Sun Dec 4 09:27:53 PST 2011


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
>



More information about the systemd-devel mailing list