[systemd-devel] [PATCH v4] journalctl: Add support for showing messages from a previous boot

Jan Janssen medhefgo at web.de
Sat Jun 15 05:16:25 PDT 2013


On 06/14/2013 10:43 PM, Zbigniew Jędrzejewski-Szmek wrote:
> On Wed, Jun 12, 2013 at 02:41:15PM +0200, Jan Janssen wrote:
>> Unfortunately, to get a chronological list of boot IDs, we
>> need to search through the journal. sd_journal_enumerate_unique()
>> doesn't help us here, because the order of returned values
>> is undefined.
> Hi Jan,
>
> as an experiment, I tried to create the time-sorted list of boot
> ids in python:
>
> from pprint import pprint
> from systemd import journal
> j = journal.Reader()
> matches={}
> for id in j.query_unique('_BOOT_ID'):
>     j.add_match(_BOOT_ID=id.hex)
>     j.seek_head()
>     try:
>         ts = j.get_next()['__REALTIME_TIMESTAMP']
>         print(ts)
>     except OSError as e:
>         print(e)    # [1]
>     else:
>         matches[ts] = id
>     j.flush_matches()
>
> pprint(sorted(matches.items()))
>
> This runs very fast on my machine... I have ~1GB of logs (cached in RAM),
> and it runs .12s including Python load time. In fact python -c '' takes .04s,
> so not an insubstantial chunk of the time for the whole query.
>
> I think you might be overcomplicating the function to query boot
> ids.
I like the idea. But sorting the boot IDs could order a few boots
wrongly, since realtime can jump backwards.

Jan


More information about the systemd-devel mailing list