Subject: [bug#30532] [PATCH] Shepherd: Terminate all services upon SIGTERM or SIGHUP

From: [email-masked] (Ludovic Courtès)
Date: Tue, 27 Feb 2018 22:03:54 +0100

Leo Famulari <[email-masked]> skribis:

> On Tue, Feb 27, 2018 at 10:45:58AM +0100, Ludovic Courtès wrote:
>> Carlo Zancanaro <[email-masked]> skribis:
>> 
>> > I use Shepherd to manage my user session, and if I log out then
>> > Shepherd leaves all my services running. This patch handles SIGTERM
>> > and SIGHUP to prevent that.
>> 
>> Good catch!
>
> "This update broke my workflow" <https://xkcd.com/1172/>
>
> Joking aside, I think this change is correct, but it would be great to
> be able to have long-running unprivileged processes, as on systemd.
> There, the administrator can use `loginctl enable-linger $USER`. We'd
> want to do it in the system configuration. From loginctl(1):
>
> ------
> Enable/disable user lingering for one or more users. If enabled for a
> specific user, a user manager is spawned for the user at boot and kept
> around after logouts. This allows users who are not logged in to run
> long-running services. Takes one or more user names or numeric UIDs as
> argument. If no argument is specified, enables/disables lingering for
> the user of the session of the caller.
> ------

Indeed, that sounds useful.

I suppose on GuixSD PID 1 could start subprocesses (with an initially
empty config file?) for selected users at boot time.  Would that make
sense?

Ludo’.