On So, 18.04.21 12:01, Norbert Lange (nolange79@xxxxxxxxx) wrote: > Hello, > > My setup is some embedded system without logind, running a service > that should be able to poweroff, reboot or reboot-and-update. > Generally I guess this also includes triggering further services > programmatically fron another. > > 1) As I do currently: send SIGRTMIN+5 to PID1 > (not really the complete solution, would need to discern between > reboot/update). > 2) exec 'systemctl start reboot.target' > basically a variant of 1). > 3) Same thing as 2), but do it with dbus or varlink. > 4) Some unknown and likely not existing configuration of unit files. > doing something like "IfExitCode=121 then start reboot.target" > 5) Use the Watchdog and let it expire. > > While working, I would expect the first 3 options to be depended on > various level of rights to interfere with > PID1, aswell as being systemd specific (using dbus or systemd DSO). > Some sort of separation between If you want to reboot the system in a sysv compatible way you can only fork off "reboot" or "shutdown -r", or maybe send SIGINT to PID 1. The latter is pretty ugly though, since this will be treated as if people actually used Ctlr-Alt-Del on the console by PID 1, i.e. this is subject to misleading log messages and the reboot hard after hitting this 7x in 2s. > advertising the need for reboot and acting on it would be cleaner (ie. > hooking it up in service files). > > What are the best option(s) here? Use logind's D-Bus APIs. It's the cleanest way to reboot, as it honours inhibitors and stuff. Lennart -- Lennart Poettering, Berlin _______________________________________________ systemd-devel mailing list systemd-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/systemd-devel