journalctl: send READY=1

Allow callers to synchronize on the point in time where the journal file
watches are fully established, in --follow mode.

Tools can invoke journalctl using this, knowing that any log message
happening after the READY=1 is definitely going to be processed by the
journalctl invocation.
This commit is contained in:
Lennart Poettering
2025-05-13 14:42:34 +02:00
parent ac3caa2f77
commit a067173fd0
2 changed files with 11 additions and 2 deletions
+7 -2
View File
@@ -773,8 +773,13 @@
<term><option>-f</option></term>
<term><option>--follow</option></term>
<listitem><para>Show only the most recent journal entries, and continuously print new entries as
they are appended to the journal.</para></listitem>
<listitem><para>Show only the most recent journal entries, and continuously print new entries as they
are appended to the journal, until Ctrl-C is hit (or the tool is otherwise terminated).</para>
<para><command>journalctl</command> will send an
<citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>
<literal>READY=1</literal> message once it initialized and successfully established its watch on the
journal.</para></listitem>
</varlistentry>
<varlistentry>
+4
View File
@@ -2,6 +2,7 @@
#include <unistd.h>
#include "sd-daemon.h"
#include "sd-event.h"
#include "ansi-color.h"
@@ -329,6 +330,7 @@ static int on_first_event(sd_event_source *s, void *userdata) {
return log_error_errno(r, "Failed to get cursor: %m");
}
(void) sd_notify(/* unset_environment= */ false, "READY=1");
return 0;
}
@@ -486,6 +488,8 @@ int action_show(char **matches) {
return sig;
}
(void) sd_notify(/* unset_environment= */ false, "READY=1");
r = show(&c);
if (r < 0)
return r;