journalctl: add new switch -b to show data from current boot only

This commit is contained in:
Lennart Poettering 2012-07-01 18:47:40 +02:00
parent ac7019f33f
commit 59cea26a34
3 changed files with 38 additions and 9 deletions

7
TODO
View File

@ -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()

View File

@ -209,6 +209,14 @@
generated messages.</para></listitem>
</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>

View File

@ -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;