diff options
-rw-r--r-- | man/journalctl.xml | 26 | ||||
-rw-r--r-- | src/journal/journalctl.c | 27 |
2 files changed, 28 insertions, 25 deletions
diff --git a/man/journalctl.xml b/man/journalctl.xml index 4bbc288b7a..632a8134db 100644 --- a/man/journalctl.xml +++ b/man/journalctl.xml @@ -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> diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 3682329e46..65114b2ff8 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -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: + case 'u': arg_unit = optarg; - arg_unit_type = "_SYSTEMD_USER_UNIT="; + arg_unit_system = true; break; - case 'u': + case ARG_USER_UNIT: arg_unit = optarg; - arg_unit_type = "_SYSTEMD_UNIT="; + 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; } |