The only purpose of the little helper daemon called shutdownd is to keep track and execute a scheduled shutdown. It prints utmp wall notifications to TTYs in periodic intervals, makes sure to create the /run/nologin and /run/systemd/shutdown/scheduled files, and eventually, once the timeout is reached, it executes systemctl again to really shut down / reboot / halt the machine. It is socket activated and communicates with systemctl via a proprietary protocol.
The current procedure for a scheduled shutdown looks like this: * shutdown (aka systemctl) is executed with a time argument (for instance, 'shutdown -h 18:00'). * As an execution time for the command was given, systemctl communicates with shutdownd via its private socket, possibly activating it that way. * shutdownd waits for the timer to elapse * shutdownd executes 'shutdown' (aka systemctl) * This time, the action is immediate, hence systemctl directly communicates with PID1 in order to start the appropriate shutdown unit. I have now reworked all this and moved the code from shutdownd into logind, which already has the logic for inhibitors and other timers. For this, logind learned two new methods on its DBus-interface: .ScheduleShutdown() .CancelScheduledShutdown() and three more properties: .ScheduledShutdown() [r] .EnableWallMessages() [rw] .WallMessage [rw] systemctl now talks to logind instead to shutdownd, and the procedure looks like this: * shutdown (aka systemctl) is executed with a time argument (for instance, 'shutdown -h 18:00'). * As an execution time for the command was given, systemctl communicates with logind via DBus in order to schedule the shutdown. * logind waits for the timer to elapse and, given that there are no inhibitors preventing it, directly communicates with PID1 in order to start the appropriate shutdown unit. shutdownd was killed entirely. As a result, we have one less daemon lurking around, a nice DBus-API for something that used to be proprietary, and even less code: 20 files changed, 727 insertions(+), 905 deletions(-) However, this means that direct users of the shutdownd socket have to migrate to the DBus interface. We are only aware of one such user, which is Cockpit, and Stef Walter (Cc) already signaled his agreement on this change. The patches are now pushed. They have been reviewed by Lennart before and I tested it for a while, but as always, we appreciate more testers for such a rework :) Thanks, Daniel _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel