Re: sdnotify-wrapper but the other way around

From: Jan Braun <janbraun_at_gmx.de>
Date: Tue, 4 Mar 2025 01:36:25 +0100

Hi,

short.cross0654_at_uwu.tube schrob:
> On Sun, Mar 2, 2025, at 3:10 AM, Jan Braun wrote:
> > just setting up the notification-fd.
>
> I'm not sure how to do this, since the sd-notify protocol[1] doesn't
> inherit an fd; instead it looks at env var NOTIFY_SOCKET to read a
> path to a unix socket, which the ready service opens and uses to send
> datagrams.

Dang, that's what I get for not testing things; I was misremembering
that it was an inherited fd. Sorry :(

> If there's a way to connect a unix datagram socket to the
> notification-fd provided by s6 more directly than I've done here, I'd
> love to know how!

Not really. But I prefer doing things in shell when I can get away with
it, so here's a ./run script to use with ./notification-fd 3:

| #!/bin/sh
| set -eu
|
| NOTIFY_SOCKET=`realpath ./notify`
| export NOTIFY_SOCKET
| timeout 1234 socat "unix-recvfrom:$NOTIFY_SOCKET,unlink-early" "system:paste >&3" &
|
| # fake service:
| exec python3 -c "import systemd.daemon, time; systemd.daemon.notify('READY=1'); time.sleep(10)"

The paste(1) is there to actually create the newline. While sd_notify(3)
says "A trailing newline is implied if none is specified", python
doesn't produce one. So much for cleverly reusing that. Yay.

regards,
    Jan

Received on Tue Mar 04 2025 - 01:36:25 CET

This archive was generated by hypermail 2.4.0 : Tue Mar 04 2025 - 01:37:01 CET