From: "Casper Ti. Vector" <caspervector@gmail.com>
To: supervision@list.skarnet.org
Subject: Re: A program that can get exactly the log of a supervised process?
Date: Fri, 23 Jun 2023 01:44:19 +0800 [thread overview]
Message-ID: <ZJSIcyVLUE2SLg6u@CasperVector> (raw)
In-Reply-To: <YXQyNQbpPZBKYLXC@CasperVector>
On Sun, Oct 24, 2021 at 12:03:01AM +0800, Casper Ti. Vector wrote:
> Any idea on how the log "teeing" may be done cleanly (and portably
> if possible; something akin to `tail -f' seems unsuitable because of
> potential log rotation), and perhaps any flaw or redundancy in the
> design above?
The recordio program is extremely enlightening here:
* Instead of trying to communicate with the logger, our program can
directly sit between the service and the logging pipe.
(This also solves the lifespan issue cleanly, saving lots of code;
the latter is apart from the lots of code to talk with the logger.)
* When forking, we may let the parent (instead of the child) exec()s
into the service, so our program does not need to forward signals.
(But the loggrep subprocess from our program may die after the
supervisor receives SIGCHLD from the service; therefore in order
not to interfere with the next run of the service, we should ensure
the loggrep program would exit on EOF and does not produce spurious
outputs on its stdout.)
The source code of the program, logtee (licence: CC0), is available at:
<https://cpaste.org/?fa30831511a456b7=#ECwUd1YaVQBLUokynQbRYZq5wvBvXXeXo3bQoeL2rL4L>
It may be tested with (logtee is itself init-agnostic; writing an
adapter to, for instance, s6, should be an easy exercise in the
manipulation of argv):
------------------------------------------------------------------------
#!/bin/execlineb -P
fdmove -c 3 1
logtee {
fdmove 1 3
if { timeout 3 grep -q "bytes from" }
echo
}
fdclose 3
fdmove -c 2 1
ping -i 10 example.com
------------------------------------------------------------------------
--
My current OpenPGP key:
RSA4096/0x227E8CAAB7AA186C (expires: 2024.09.30)
7077 7781 B859 5166 AE07 0286 227E 8CAA B7AA 186C
next prev parent reply other threads:[~2023-06-22 17:44 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-23 16:03 Casper Ti. Vector
2023-06-22 17:44 ` Casper Ti. Vector [this message]
2023-06-22 19:39 ` Casper Ti. Vector
2023-06-22 19:43 ` Casper Ti. Vector
[not found] <YXQyNQbpPZBKYLXC@caspervector>
2021-10-24 6:20 ` Laurent Bercot
2021-10-24 7:20 ` Casper Ti. Vector
[not found] ` <YXUJKWltk+OwYhtf@caspervector>
2021-10-25 12:37 ` Laurent Bercot
2021-10-25 12:57 ` Rio Liu
2021-10-25 13:26 ` Laurent Bercot
2021-10-25 16:00 ` Casper Ti. Vector
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=ZJSIcyVLUE2SLg6u@CasperVector \
--to=caspervector@gmail.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).