supervision - discussion about system services, daemon supervision, init, runlevel management, and tools such as s6 and runit
 help / color / mirror / Atom feed
From: "artur.brzozowski" <artur.brzozowski@protonmail.com>
To: "supervision@list.skarnet.org" <supervision@list.skarnet.org>
Subject: s6 vs shell wrappers for client connections
Date: Tue, 10 Jan 2023 22:23:32 +0000	[thread overview]
Message-ID: <FxOuWLzQ1B0aKMDSLq5hI3ftZkCJ_ZAmIBnKFLPdY2kV7fvM7YBpcMKu0XLPj5ETWnYjY18VlPTWy7EmMms3n4_P3b4K2D_Dfff3GOhXdn0=@protonmail.com> (raw)

Hi.

I'm wondering if and how s6 can help with the following
user-oriented problem:

You have a program that can be started normally or as a service
that accepts connections through a socket. For client
connections, an additional binary is supplied.

The simplest way to make sure that the program launches
regardless of whether there's a server running or not is a
wrapper script that executes the right binary based on socket's
availability.

Example of this is the 'foot' terminal emulator - it has 'foot
[--server]' and footclient binaries.  How, if at all, could s6
help remove this executable ambiguity, the need for checking and
wrapping? The goal is to always run the program correctly: if
server is available, connect to it with client binary, if not -
use the standard one.

In a not-so-old issue thread [1] I read:
>
> User: st3r4g
> For example, with s6-rc you would have a foot server service
> running foot -s -p 3 and have notification-fd set to 3 in the
> service directory. Then you can have e.g. footclient irssi
> depend on the foot server service, and they will all be started
> in the correct order, as soon as possible.
>
> User: dnkl
> The --print-pid option was designed with s6 in mind ;)

To continue with the example: I set up 'foot' as described above.
The result is that s6-svscan/supervise starts the 'foot' server,
places an 'S' socket in the service directory and sits there.  I
can connect to the server by pointing to socket in service
directory
$ footclient -s "$s6-foot-servdir/S"

This however, still requires me to check for the socket and
if-else the binary and options each time I want to start the
program, doesn't it? Does s6 offer a remedy?

Any pointers, even to the correct man page for this, would be
appreciated.

Best wishes,
Artur

[0] https://codeberg.org/dnkl/foot
[1] https://codeberg.org/dnkl/foot/issues/604#issuecomment-267617


             reply	other threads:[~2023-01-10 22:23 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-10 22:23 artur.brzozowski [this message]
2023-01-11  9:53 ` Laurent Bercot
2023-01-11 16:08   ` artur.brzozowski
2023-01-11 20:15 ` Steve Litt
2023-01-12  0:51   ` Laurent Bercot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='FxOuWLzQ1B0aKMDSLq5hI3ftZkCJ_ZAmIBnKFLPdY2kV7fvM7YBpcMKu0XLPj5ETWnYjY18VlPTWy7EmMms3n4_P3b4K2D_Dfff3GOhXdn0=@protonmail.com' \
    --to=artur.brzozowski@protonmail.com \
    --cc=supervision@list.skarnet.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).