From 59cea26a349cfa8db906b520dac72563dd773ff2 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sun, 1 Jul 2012 18:47:40 +0200 Subject: journalctl: add new switch -b to show data from current boot only --- TODO | 7 +------ man/journalctl.xml | 8 ++++++++ src/journal/journalctl.c | 32 +++++++++++++++++++++++++++++--- 3 files changed, 38 insertions(+), 9 deletions(-) diff --git a/TODO b/TODO index 1a7b60e236..b3aac5af30 100644 --- a/TODO +++ b/TODO @@ -1,6 +1,3 @@ -Fedora 18: -* chrony/ntp target? - Bugfixes: * remove MS_SHARED from src/core/execute.c and src/test/test-ns.c. They are always combined with MS_REMOUNT, which currently does nothing in the kernel, but might which fail in the @@ -52,9 +49,7 @@ Features: * new dependency type to "group" services in a target -* add switch to journalctl to only show data from current boot - -* change REquires=basic.target to RequisiteOverride=basic.target +* change Requires=basic.target to RequisiteOverride=basic.target * turn $NOTIFY_SOCKET back into an abstract namespace socket for compatibility with services which chroot() diff --git a/man/journalctl.xml b/man/journalctl.xml index d46a1648c7..6254c5c682 100644 --- a/man/journalctl.xml +++ b/man/journalctl.xml @@ -209,6 +209,14 @@ generated messages. + + + + + Show data only from + local boot. + + diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index e9d918a733..6929b76018 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -49,6 +49,7 @@ static bool arg_no_tail = false; static bool arg_new_id128 = false; static bool arg_quiet = false; static bool arg_local = false; +static bool arg_this_boot = false; static int help(void) { @@ -64,8 +65,9 @@ static int help(void) { " -o --output=STRING Change journal output mode (short, short-monotonic,\n" " verbose, export, json, cat)\n" " -q --quiet Don't show privilege warning\n" - " --new-id128 Generate a new 128 Bit id\n" - " -l --local Only local entries\n", + " -l --local Only local entries\n" + " -b --this-boot Show data only from current boot\n" + " --new-id128 Generate a new 128 Bit id\n", program_invocation_short_name); return 0; @@ -92,6 +94,7 @@ static int parse_argv(int argc, char *argv[]) { { "new-id128", no_argument, NULL, ARG_NEW_ID128 }, { "quiet", no_argument, NULL, 'q' }, { "local", no_argument, NULL, 'l' }, + { "this-boot", no_argument, NULL, 'b' }, { NULL, 0, NULL, 0 } }; @@ -100,7 +103,7 @@ static int parse_argv(int argc, char *argv[]) { assert(argc >= 0); assert(argv); - while ((c = getopt_long(argc, argv, "hfo:an:ql", options, NULL)) >= 0) { + while ((c = getopt_long(argc, argv, "hfo:an:qlb", options, NULL)) >= 0) { switch (c) { @@ -159,6 +162,10 @@ static int parse_argv(int argc, char *argv[]) { arg_local = true; break; + case 'b': + arg_this_boot = true; + break; + case '?': return -EINVAL; @@ -232,6 +239,25 @@ int main(int argc, char *argv[]) { goto finish; } + if (arg_this_boot) { + char match[9+32+1] = "_BOOT_ID="; + sd_id128_t boot_id; + + r = sd_id128_get_boot(&boot_id); + if (r < 0) { + log_error("Failed to get boot id: %s", strerror(-r)); + goto finish; + } + + sd_id128_to_string(boot_id, match + 9); + + r = sd_journal_add_match(j, match, strlen(match)); + if (r < 0) { + log_error("Failed to add match: %s", strerror(-r)); + goto finish; + } + } + for (i = optind; i < argc; i++) { if (path_is_absolute(argv[i])) { char *p = NULL; -- cgit v1.2.3-54-g00ecf