[PATCH] Shepherd: Terminate all services upon SIGTERM or SIGHUP

  • Done
  • quality assurance status badge
Details
3 participants
  • Carlo Zancanaro
  • Leo Famulari
  • Ludovic Courtès
Owner
unassigned
Submitted by
Carlo Zancanaro
Severity
normal
C
C
Carlo Zancanaro wrote on 19 Feb 2018 18:11
(address . guix-patches@gnu.org)
87sh9wnbu6.fsf@zancanaro.id.au
Hey,

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.

I hope the guix-patches mailing list was the right place to send
it. From what I understand Shepherd development is done through
the guix lists, so it seemed to make the most sense to me.

It's also worth noting that I had to run `gettextize` to get
Shepherd to build on current master, but I haven't included those
changes in this commit (because I don't know what should be
committed and what shouldn't).

Carlo
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEE1lpncq7JnOkt+LaeqdyPv9awIbwFAlqLBVEACgkQqdyPv9aw
IbxxpA/+O5zb2L/rpSnrGK7IMNAYeo2cOoA/TjKDu574BUfxqlpIkuSjRwvPFmVE
1pQNtpeZx0uWAEbFYtjtI8xsQlilQasK4L6AUYGpEQzGZetLPQzTyQaqH6rlzASH
yr9Fjv6/qpbyTGGkhTfGMz+witLCefjg+L30m0jViIXxjBERIFW6OjEjgofY35OL
wJBpB8NXcVbDem/h9dpdMzVTse5WSvmDHNQGTYwforYO45llmiLb8uItll6Ma8E6
oAG+GYDJPbDyXRMSMWLuQ1TPlQ42/s/SV6ZKjzax6xQ3eUIrUi53hZFex4VqlXqj
EAdu8sNPb6BBVlew4XGrYFcmtwvj3s7y1nCTN2IuNFXb87PKjoOdnJfDdlyQR4+n
EVul+qowBFqA5+AyVcCh/BFUDcrVvVTZrZUJBEBQjSgglNlQC8Wun39ulhIeNKb5
q8qfFedmT5H5emlij6ruSaFSU009Q3FSCDH4fg5eezjcncXDXIoZ/XLR5gtdEewa
s9zHnqamTAIAvtVtcEmqjtg7iru3Qovknf0+VXrAoqE1Bn9Uv01HEaQv0uvGks4P
2aW1InSSu7qd1N60+udQdWcxlYzTpqJsn0dIPW0dENR2z3JnH5bIMXF8j270NGpe
Zvy0ndXu0W3I/jRW+TAh0u3oDwOB+vbnsEylh9uEwC8dp3VUY9I=
=LnSF
-----END PGP SIGNATURE-----

L
L
Ludovic Courtès wrote on 27 Feb 2018 10:45
(name . Carlo Zancanaro)(address . carlo@zancanaro.id.au)(address . 30532@debbugs.gnu.org)
87lgfe4vft.fsf@gnu.org
Hi Carlo,

Carlo Zancanaro <carlo@zancanaro.id.au> skribis:

Toggle quote (4 lines)
> 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!

Toggle quote (4 lines)
> I hope the guix-patches mailing list was the right place to send
> it. From what I understand Shepherd development is done through the
> guix lists, so it seemed to make the most sense to me.

Yes, that’s perfect.

Toggle quote (5 lines)
> It's also worth noting that I had to run `gettextize` to get Shepherd
> to build on current master, but I haven't included those changes in
> this commit (because I don't know what should be committed and what
> shouldn't).

Right, I’m not sure what’s wrong with that. I’ve committed the same
files under po/ as I did for Guix:

Toggle snippet (5 lines)
$ git ls-files po/
po/Makevars
po/POTFILES.in

Toggle quote (10 lines)
> From aabb9c6b1b52189d20339531de0b8b96bcace69f Mon Sep 17 00:00:00 2001
> From: Carlo Zancanaro <carlo@zancanaro.id.au>
> Date: Tue, 20 Feb 2018 02:52:47 +1100
> Subject: [PATCH] Terminate all services upon SIGTERM or SIGHUP
>
> * modules/shepherd.scm (main): Add SIGTERM and SIGHUP handlers which stop
> root-service.
> * tests/sigterm.sh, tests/sighup.sh: New files.
> * Makefile.am (TESTS): Add tests/sigterm.sh and tests/sighup.sh.

Excellent!

I have one request: since the three tests differ only in the signal
name, could you make it a single test file and have a loop like:

for signal in SIGTERM SIGHUP SIGINT

TIA,
Ludo’.
L
L
Leo Famulari wrote on 27 Feb 2018 18:22
(name . Ludovic Courtès)(address . ludo@gnu.org)
20180227172243.GA19017@jasmine.lan
On Tue, Feb 27, 2018 at 10:45:58AM +0100, Ludovic Courtès wrote:
Toggle quote (8 lines)
> Carlo Zancanaro <carlo@zancanaro.id.au> 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.
------
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEsFFZSPHn08G5gDigJkb6MLrKfwgFAlqVk94ACgkQJkb6MLrK
fwgPzg/8Dnnizd1nnhw/v5ok6A70JMYE2zCfuKesIkYGO6q3D66Tf+jzY1fEmSBF
sxFiDxBL6RX6Nr8Knq2O8y6sRh0heGuHqGCTJi+QsqbWMSGZn4kromLdaCq578co
+yv5E5c2AuudrWJilu1dKZRzSP0nnZGZjjCIK6BCGcLowl0c41vx3mXT4txIHIrg
IOwI29aWFnHl2+mZ3Mwnylyoc1/CbHbteEoHt0/gMdxi2XrX3z10yhgX3sfODPMG
f2zEQpkFFqcDxaVBaYXLbNTxexY2tSGm9AWj35qzgsz/baDvcCPuL9iHWUzPRz+7
ZdTTCR1JRXW563iFrgLbqOv3d+cwBk5QrDT6u26hj2ui7V/hni5qVNyGG/TmDqfM
8ySKmWxecXkrhMzGo72/6edBxprdEUSf5y/mh+anp051kenwn5PbXQQEzugyJvMp
ubTf27LsuYV/wgkkdbQTliXcIjwklKAEBBokh+S8x9nxxaJKIdrC4cfWWPMLR/Nz
HHj20qqNcCv58dWsjb070MbFsSzPHSTCgUp9/fIh2zfZ5M3UreZ0/9pn6A/lyQp/
aQS4YyvqCfy/C9efir9EV3B3Wiu/aLZq/e/jhW4nycZsWb0LjUEuSeUVHEmerS41
/j5OJcx/PECVIIiXBXZDJpsCjk5SFwQVfvfPMsl5HXdxjN0yms8=
=76Wm
-----END PGP SIGNATURE-----


L
L
Ludovic Courtès wrote on 27 Feb 2018 22:03
(name . Leo Famulari)(address . leo@famulari.name)
877eqyxhz9.fsf@gnu.org
Leo Famulari <leo@famulari.name> skribis:

Toggle quote (25 lines)
> On Tue, Feb 27, 2018 at 10:45:58AM +0100, Ludovic Courtès wrote:
>> Carlo Zancanaro <carlo@zancanaro.id.au> 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’.
C
C
Carlo Zancanaro wrote on 27 Feb 2018 22:19
(name . Leo Famulari)(address . leo@famulari.name)
87bmga9lm4.fsf@zancanaro.id.au
On Tue, Feb 27 2018, Leo Famulari wrote:
Toggle quote (2 lines)
> "This update broke my workflow" https://xkcd.com/1172/

How seriously should I take this? I understand that it's a joke,
but are you currently relying on this behaviour of shepherd? I
could add an action to the root service to tell shepherd to leave
processes behind when it is killed, if we wanted to expose that
behaviour.

Carlo
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEE1lpncq7JnOkt+LaeqdyPv9awIbwFAlqVy1MACgkQqdyPv9aw
Ibyb1Q//UuxKXFmgDb3d3rCQBxJkZ+8gzAK7/YkxVcAeZV3s/t+n56rKqvo7qTkt
oQFJ24qe0eekVZ8/c0925bb0dnl04GiETVGo8kLyXzEh8Pn5iCPrNmpDYXVSgPtA
5oVhBXs8IZLxksRwej2lOye9jARZJeSrnbnm94IMkl4H2s0yLxBsrI5AiYc8Mt5g
+p1epIQMhgH5/LSdCY6kCFcJObazjTiZti+nrfap63C0gFOVykE+gRMMajhKgppY
OCTVke7PaF6FI1aYTrScb53hxlpgL1Xn3VPDlnPknz8HCEmUzl2D8r9XS2C72Mfp
Way9iNRO4TER7O+V6VAkbkmsPoypSk/kk4PMjGGDntNdH/wKNDydRYx5qkomaV0B
aFrnqk6fceQAq8TXd3pllguhg6j/odBCcDUXVo/gb/5spKsXF25A0g81Z3a/y61i
mZgG/u67W1nruc/9ijnaEm0OOBo2HqxXAcDLSRbwJyA/sPoqTI6KHoZFKyHdoaDO
VtNecTkKxCZHRCt+ffWa09tiyk2lCA49CMo9Mmom4nJ8hj5dTQkSxMewnSbecO1p
qg01Y/OMuID7rT8r+RD1rFM6KMTVd7TrXVXGJXo7nLwk4zyl4sPOHgh76QsBsi+D
+M6ghyd/H0CHx6vG1VKSEzVA/fRnqZ4jR430ZYUWP7s3L2nlk0s=
=ZRdp
-----END PGP SIGNATURE-----

C
C
Carlo Zancanaro wrote on 27 Feb 2018 22:29
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 30532@debbugs.gnu.org)
87a7vu9l4h.fsf@zancanaro.id.au
Hey Ludo,

On Tue, Feb 27 2018, Ludovic Courtès wrote:
Toggle quote (20 lines)
>> It's also worth noting that I had to run `gettextize` to get
>> Shepherd
>> to build on current master, but I haven't included those
>> changes in
>> this commit (because I don't know what should be committed and
>> what
>> shouldn't).
>
> Right, I’m not sure what’s wrong with that. I’ve committed the
> same
> files under po/ as I did for Guix:
>
> --8<---------------cut
> here---------------start------------->8---
> $ git ls-files po/
> po/Makevars
> po/POTFILES.in
> --8<---------------cut
> here---------------end--------------->8---

If you clone shepherd from the repository, can you build it?
Comparing the guix repository to the shepherd one I can't easily
work out what needs to be done for this, but hopefully you can at
least reproduce my problem.

Toggle quote (6 lines)
> I have one request: since the three tests differ only in the
> signal
> name, could you make it a single test file and have a loop like:
>
> for signal in SIGTERM SIGHUP SIGINT

Updated patch is attached.

Carlo
From 717456edd92ba753daf5dd40e2f8d51eab3e7a73 Mon Sep 17 00:00:00 2001
From: Carlo Zancanaro <carlo@zancanaro.id.au>
Date: Tue, 20 Feb 2018 02:52:47 +1100
Subject: [PATCH] Terminate all services upon SIGTERM or SIGHUP

* modules/shepherd.scm (main): Add SIGTERM and SIGHUP handlers which stop
root-service.
* tests/sigint.sh: Rename to...
* tests/signals.sh: ... this, and add tests for SIGTERM and SIGUP.
---
Makefile.am | 3 ++-
modules/shepherd.scm | 11 +++++++++++
tests/{sigint.sh => signals.sh} | 23 ++++++++++++++---------
3 files changed, 27 insertions(+), 10 deletions(-)
rename tests/{sigint.sh => signals.sh} (72%)

Toggle diff (94 lines)
diff --git a/Makefile.am b/Makefile.am
index a30b11d..1c394e1 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,6 +1,7 @@
# Makefile.am -- How to build and install the Shepherd.
# Copyright © 2002, 2003 Wolfgang Jährling <wolfgang@pro-linux.de>
# Copyright © 2013, 2014, 2015, 2016, 2018 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2018 Carlo Zancanaro <carlo@zancanaro.id.au>
#
# This file is part of the GNU Shepherd.
#
@@ -188,7 +189,7 @@ TESTS = \
tests/no-home.sh \
tests/pid-file.sh \
tests/status-sexp.sh \
- tests/sigint.sh
+ tests/signals.sh
TEST_EXTENSIONS = .sh
EXTRA_DIST += $(TESTS)
diff --git a/modules/shepherd.scm b/modules/shepherd.scm
index 5334657..650ba63 100644
--- a/modules/shepherd.scm
+++ b/modules/shepherd.scm
@@ -1,6 +1,7 @@
;; shepherd.scm -- The daemon shepherd.
;; Copyright (C) 2013, 2014, 2016, 2018 Ludovic Courtès <ludo@gnu.org>
;; Copyright (C) 2002, 2003 Wolfgang Jährling <wolfgang@pro-linux.de>
+;; Copyright (C) 2018 Carlo Zancanaro <carlo@zancanaro.id.au>
;;
;; This file is part of the GNU Shepherd.
;;
@@ -182,6 +183,16 @@
(lambda _
(stop root-service)))
+ ;; Stop everything when we get SIGTERM.
+ (sigaction SIGTERM
+ (lambda _
+ (stop root-service)))
+
+ ;; Stop everything when we get SIGHUP.
+ (sigaction SIGHUP
+ (lambda _
+ (stop root-service)))
+
;; Ignore SIGPIPE so that we don't die if a client closes the connection
;; prematurely.
(sigaction SIGPIPE SIG_IGN)
diff --git a/tests/sigint.sh b/tests/signals.sh
similarity index 72%
rename from tests/sigint.sh
rename to tests/signals.sh
index 7354848..acb254a 100644
--- a/tests/sigint.sh
+++ b/tests/signals.sh
@@ -1,5 +1,6 @@
-# GNU Shepherd --- Make sure SIGINT is correctly handled.
+# GNU Shepherd --- Make sure SIGINT, SIGTERM, and SIGHUP are correctly handled.
# Copyright © 2014, 2016 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2018 Carlo Zancanaro <carlo@zancanaro.id.au>
#
# This file is part of the GNU Shepherd.
#
@@ -44,14 +45,18 @@ cat > "$conf"<<EOF
(start 'test)
EOF
-rm -f "$pid" "$stamp"
-shepherd -I -s "$socket" -c "$conf" --pid="$pid" --log="$log" &
+for signal in INT TERM HUP; do
-while [ ! -f "$pid" ] ; do sleep 0.5 ; done
+ rm -f "$pid" "$stamp" "$socket"
+ shepherd -I -s "$socket" -c "$conf" --pid="$pid" --log="$log" &
-# Send SIGINT to shepherd.
-kill -INT "`cat "$pid"`"
-while kill -0 "`cat "$pid"`" ; do sleep 0.5 ; done
+ while [ ! -f "$pid" ] ; do sleep 0.5 ; done
-# Make sure the service's 'stop' method was called.
-test -f "$stamp"
+ # Send signal to shepherd.
+ kill -$signal "`cat "$pid"`"
+ while kill -0 "`cat "$pid"`" ; do sleep 0.5 ; done
+
+ # Make sure the service's 'stop' method was called.
+ test -f "$stamp"
+
+done
--
2.16.1
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEE1lpncq7JnOkt+LaeqdyPv9awIbwFAlqVzc4ACgkQqdyPv9aw
IbzBLBAAiLvfHSep1yMOn9LmfMuOWCiCG/mcd07czWtYiNMSuZJ/20KHGacdlBSp
sDMkLDDdM+DPEIT7pGh/LSpdtXlITFzTYChsIxEu7MAkY72rsstzzOWzyZcVIEKo
l1u8OOGlXKU13rTFESdZLL2RM7ndBpGgVSdZ18R3ngoB0fSXOhUuLQc8PnjK1snc
4AwyL4bXfxLz4TkMZhGVoPOcAIIJN4V0mX4+HiEDYjUg29f6aIQ4/bMdeqnc9dp+
KxW4J01u9E3SkEQQCNt4gAj9AyBXABoAVLOOF6eKKAxbIO1vFKvePumf6S0VXyKy
PoSZgVp00CvwFef9zlecLM9EznD7LkfA6erlPUbL+riYoIy20NA3NaaCuuVnlk7k
NaRd5ijYxDWmXKpjfBX86i8YvGqZABaL28bwiW3IAUXNwunM9Jj1DuwxuUsl5LP/
J/HbPCQPnK0SkI7XDXBLkarThZMXMEx0S65IC3F0G00Qfr12H+F0pdkMrd500F1o
5ZRNlm6tEcg6CIz0SYHfQ1eqc22djkNC1ZmLvf+dI7CBptUk/oW6Plz6piAU/i5U
fEsjs32ri0CJZQMhGHeyC/AfhmPC549pvIzYMtR168Ez/nEw0Tfcdc3Y7u0odeaW
qw8BoI8cXkYy9PlSJPj3RD9TuUG9jg3B2zJlhy3qVoFi8GWrADc=
=NyjP
-----END PGP SIGNATURE-----

L
L
Ludovic Courtès wrote on 27 Feb 2018 22:30
(name . Carlo Zancanaro)(address . carlo@zancanaro.id.au)
87efl6w26t.fsf@gnu.org
Carlo Zancanaro <carlo@zancanaro.id.au> skribis:

Toggle quote (8 lines)
> On Tue, Feb 27 2018, Leo Famulari wrote:
>> "This update broke my workflow" <https://xkcd.com/1172/>
>
> How seriously should I take this? I understand that it's a joke, but
> are you currently relying on this behaviour of shepherd? I could add
> an action to the root service to tell shepherd to leave processes
> behind when it is killed, if we wanted to expose that behaviour.

Maybe with an option: --signal-handling-style=leo's?

:-)

Ludo’.
L
L
Ludovic Courtès wrote on 1 Mar 2018 10:55
(name . Carlo Zancanaro)(address . carlo@zancanaro.id.au)(address . 30532@debbugs.gnu.org)
878tbc86hm.fsf@gnu.org
Carlo Zancanaro <carlo@zancanaro.id.au> skribis:

Toggle quote (10 lines)
> From 717456edd92ba753daf5dd40e2f8d51eab3e7a73 Mon Sep 17 00:00:00 2001
> From: Carlo Zancanaro <carlo@zancanaro.id.au>
> Date: Tue, 20 Feb 2018 02:52:47 +1100
> Subject: [PATCH] Terminate all services upon SIGTERM or SIGHUP
>
> * modules/shepherd.scm (main): Add SIGTERM and SIGHUP handlers which stop
> root-service.
> * tests/sigint.sh: Rename to...
> * tests/signals.sh: ... this, and add tests for SIGTERM and SIGUP.

Perfect. Applied, thanks!

Ludo’.
L
L
Leo Famulari wrote on 2 Mar 2018 01:30
(name . Carlo Zancanaro)(address . carlo@zancanaro.id.au)
20180302003009.GA8305@jasmine.lan
On Wed, Feb 28, 2018 at 08:19:15AM +1100, Carlo Zancanaro wrote:
Toggle quote (8 lines)
> On Tue, Feb 27 2018, Leo Famulari wrote:
> > "This update broke my workflow" <https://xkcd.com/1172/>
>
> How seriously should I take this? I understand that it's a joke, but are you
> currently relying on this behaviour of shepherd? I could add an action to
> the root service to tell shepherd to leave processes behind when it is
> killed, if we wanted to expose that behaviour.

I am using it, but it's not critical. I can stay logged in with tmux or
something after this change. I'd rather we address this use case as
described previously, with something like 'enable-linger'.
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEsFFZSPHn08G5gDigJkb6MLrKfwgFAlqYmw0ACgkQJkb6MLrK
fwh9FxAAyDFhfmmNJmruBXG94bUN7IKW3BGX1JaoDnsZmEbNuI3XasGdZZi3XK5x
Gcq/+gvhrtxEEwIjtMva4igz85ubsdP7VtW04TOeOGwsQL0YgkB5RpCG1EH3sKcG
1cE+sZDYG5E6pa+3RlBz2uVjnjewwmA/AwVLi5nm64lM9Spo4oBK/2ZGpyu2QcHt
uxvRakxinF88/Lbx1Pun8nZp/kEeFqzTTbQkY++6MPTRV4GoBN8IBRg4eqWmO2a+
7ulxePiL8cR5sAzJMm+NGqZfKHI3gH9/gqEN/e5BLoC+asZHDdJlmx7jGKQhIwX8
lAUZJtfI3xah4k99J0e085s3xDC5+xQTbTBGmoGHOqE/Ly85equiJIZu8SoX4Q86
+JCRPuK7p8PKDmnImQbYUh6zn81n+1ywp3rpTvXKyzlw7DXiJV13UzSZH62X147x
ukEynuex2omq93jRhdS+b7IUCL+vSKE/AlJ33wrBNgFaks3E6W5soPs+gTKSNQdm
eLfHR0/+qz+/UFym/tCvoyojDu29mtDq4yIN3jBHBcVtCY5KSCdKJsfxnIoCm/he
v69S3ab2gB8aUdXqa9NQ0J9uASUnujDBbVi+gYUiPr3TkYd6VGzxq3EPbkJL9mbW
IYwqISV4ImeSOCMchVW1cuipbuwycHuYSk/bnbRDYmrFmljLhGo=
=3y7h
-----END PGP SIGNATURE-----


C
C
Carlo Zancanaro wrote on 2 Mar 2018 08:25
(name . Leo Famulari)(address . leo@famulari.name)
874llzgcrd.fsf@zancanaro.id.au
Hey Leo,

On Fri, Mar 02 2018, Leo Famulari wrote:
Toggle quote (3 lines)
> I'd rather we address this use case as described previously,
> with something like 'enable-linger'.

I've not used the enable-linger functionality of systemd, but
after doing some reading, maybe it could work like this?

At boot-time we could start an instance of shepherd for each
permitted user (maybe with a `lingering-user-service-type` which
adds a shepherd service?). It loads ~/.config/shepherd/init.scm,
and starts any services which are enabled. It also adds a
pseudo-service "login", which allows a user to specify a
dependency on there being a current user session (so shepherd can
be told to start processes on login, and to terminate them on
logout).

For users who don't have a `lingering-user-service-type` running,
pid 1 will listen until they log-in and will start a shepherd
instance for them on login, loading ~/.config/shepherd/init.scm.
When they logout pid 1 will terminate their user shepherd instance
(along with any services it started).

This will require a few more changes to shepherd before it can
work, but does that sound like the sort of behaviour you want?
Could you open a new bug about it?

Carlo
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEE1lpncq7JnOkt+LaeqdyPv9awIbwFAlqY/GYACgkQqdyPv9aw
IbxNEA//fczfJKjPS/09pSfwOrURaywa2WZQ0B3mM8jHmE7140f45/fupBAc65ye
YqncqtPHxsiR4JVUSDB8NrFYGHEkIkQkhNQC0wOJqr4XMJc6KbgEMSvj5FC7NwkH
ARCi/vGt9CR4IctKuGAJaxJD3BemPDVfWgxQUmyUHi9qzNLjl+b56Sk+yFKR2e+x
TH/GS3A5IOTjKJpo4B8LCxllMHB5BYZ9rPA0/dbMCQQwEggNnt4+ln91jBR21yB8
Ugfax39lYh6cg7cQT16rmp74EhFJD5ArhN4MMOgbL48QoibMrwpR+bLHvczN773A
ox2P31g4TdofH/bn1aslCKokiGERFGnSvtCwbfK96Zp6ttjxOIyDzBrwrFV2ugsV
x0gxB15FBDNxaxsq9srjLwfScgfC1YJrBY/5W5+I8yZqztH1ymUndVrKWwm8c1LQ
/qC5bG6U/AnWxdsBwY43a1dzaSt7xTt6GzJbeM2EyICRahNAXZC00b5flYBlRNuk
1A19T2fszDcfdbxQXcFQN/0iiiyKS4yIY/HWB9JGNzCcq+9LOMf1Nbz0ERoFQx1u
Ak/XUOQk2i5eWCQQ+/1ydQ4ehSPuMddTMI159GE5ICdqxzsZNSqqjbcb4gm+FFXY
wdJaFU/mu+PRZdfru/8jGKe0QAeqfKoZ5AIYj1qlOteR9hX2NtI=
=eioX
-----END PGP SIGNATURE-----

L
L
Ludovic Courtès wrote on 2 Mar 2018 13:57
control message for bug #30532
(address . control@debbugs.gnu.org)
87fu5ihbye.fsf@gnu.org
tags 30532 fixed
close 30532
?