1
0
mirror of https://github.com/systemd/systemd.git synced 2025-03-19 22:50:17 +03:00

journalctl: show systemd messages about unit for -u

journalctl -u unit is not very useful, because it doesn't show
systemd messages about starting, stopping, coredumps, etc,
like systemctl status unit does. Make it show the same
information using the same rules.

If somebody really want to see just messages from by the unit,
it is easy enough to use _SYSTEMD_UNIT=...
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2013-03-13 19:30:05 -04:00
parent 886a64fe69
commit 7199aa96ce
2 changed files with 30 additions and 27 deletions

View File

@ -324,22 +324,28 @@
<term><option>-u</option></term>
<term><option>--unit=</option></term>
<listitem><para>Show data only of the
specified unit. This will add a match
for <literal>_SYSTEMD_UNIT=</literal>
for the specified
unit.</para></listitem>
<listitem><para>Show messages for the
specified systemd unit. This will add
a match for messages from the unit
(<literal>_SYSTEMD_UNIT=</literal>)
and additional matches for messages
from systemd and messages about
coredumps for the specified unit.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--user-unit=</option></term>
<listitem><para>Show data only of the
<listitem><para>Show messages for the
specified user session unit. This will
add a match for
<literal>_SYSTEMD_USER_UNIT=</literal>
for the specified
unit.</para></listitem>
add a match for messages from the unit
(<literal>_SYSTEMD_USER_UNIT=</literal>
and <literal>_UID=</literal>) and
additional matches for messages from
session systemd and messages about
coredumps for the specified unit.
</para></listitem>
</varlistentry>
<varlistentry>

View File

@ -38,6 +38,7 @@
#include <systemd/sd-journal.h>
#include "log.h"
#include "logs-show.h"
#include "util.h"
#include "path-util.h"
#include "build.h"
@ -76,7 +77,7 @@ static usec_t arg_interval = DEFAULT_FSS_INTERVAL_USEC;
static usec_t arg_since, arg_until;
static bool arg_since_set = false, arg_until_set = false;
static const char *arg_unit = NULL;
static const char *arg_unit_type = NULL;
static bool arg_unit_system;
static const char *arg_field = NULL;
static bool arg_catalog = false;
static bool arg_reverse = false;
@ -187,8 +188,8 @@ static int parse_argv(int argc, char *argv[]) {
{ "cursor", required_argument, NULL, 'c' },
{ "since", required_argument, NULL, ARG_SINCE },
{ "until", required_argument, NULL, ARG_UNTIL },
{ "user-unit", required_argument, NULL, ARG_USER_UNIT },
{ "unit", required_argument, NULL, 'u' },
{ "user-unit", required_argument, NULL, ARG_USER_UNIT },
{ "field", required_argument, NULL, 'F' },
{ "catalog", no_argument, NULL, 'x' },
{ "list-catalog", no_argument, NULL, ARG_LIST_CATALOG },
@ -419,14 +420,14 @@ static int parse_argv(int argc, char *argv[]) {
arg_until_set = true;
break;
case ARG_USER_UNIT:
arg_unit = optarg;
arg_unit_type = "_SYSTEMD_USER_UNIT=";
break;
case 'u':
arg_unit = optarg;
arg_unit_type = "_SYSTEMD_UNIT=";
arg_unit_system = true;
break;
case ARG_USER_UNIT:
arg_unit = optarg;
arg_unit_system = false;
break;
case '?':
@ -604,16 +605,12 @@ static int add_unit(sd_journal *j) {
if (!u)
return log_oom();
m = strappend(arg_unit_type, u);
if (!m)
return log_oom();
r = sd_journal_add_match(j, m, strlen(m));
if (r < 0) {
log_error("Failed to add match: %s", strerror(-r));
if (arg_unit_system)
r = add_matches_for_unit(j, u);
else
r = add_matches_for_user_unit(j, u, getuid());
if (r < 0)
return r;
}
return 0;
}