summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2012-07-01 18:47:40 +0200
committerLennart Poettering <lennart@poettering.net>2012-07-02 10:43:56 +0200
commit59cea26a349cfa8db906b520dac72563dd773ff2 (patch)
treee8632faebbc458cd3554267896449a086455c784
parentac7019f33f1618f5b69ed44a8623e2596f1e3856 (diff)
journalctl: add new switch -b to show data from current boot only
-rw-r--r--TODO7
-rw-r--r--man/journalctl.xml8
-rw-r--r--src/journal/journalctl.c32
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
@@ -210,6 +210,14 @@
</varlistentry>
<varlistentry>
+ <term><option>--this-boot</option></term>
+ <term><option>-b</option></term>
+
+ <listitem><para>Show data only from
+ local boot.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
<term><option>--new-id128</option></term>
<listitem><para>Instead of showing
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;