journalctl -f redirected to a pipe or file wasn't working for some output formats but was working for json. It turns out only json was doing an fflush.
Make all output formats flush. --- src/shared/logs-show.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c index 60eb896..cafddf7 100644 --- a/src/shared/logs-show.c +++ b/src/shared/logs-show.c @@ -521,7 +521,6 @@ static int output_json(sd_journal *j, unsigned line, } fputs("\n}", stdout); - fflush(stdout); return 0; } @@ -560,13 +559,16 @@ static int (*output_funcs[_OUTPUT_MODE_MAX])(sd_journal*j, unsigned line, int output_journal(sd_journal *j, OutputMode mode, unsigned line, unsigned n_columns, OutputFlags flags) { + int ret; assert(mode >= 0); assert(mode < _OUTPUT_MODE_MAX); if (n_columns <= 0) n_columns = columns(); - return output_funcs[mode](j, line, n_columns, flags); + ret = output_funcs[mode](j, line, n_columns, flags); + fflush(stdout); + return ret; } int show_journal_by_unit( -- 1.7.11.4 _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel