diff options
-rw-r--r-- | src/journal/coredump.c | 9 | ||||
-rw-r--r-- | src/shared/logs-show.c | 18 |
2 files changed, 21 insertions, 6 deletions
diff --git a/src/journal/coredump.c b/src/journal/coredump.c index c989be9b82..91528d3c81 100644 --- a/src/journal/coredump.c +++ b/src/journal/coredump.c @@ -144,11 +144,14 @@ int main(int argc, char* argv[]) { core_unit = strappend("COREDUMP_UNIT=", t); free(t); - - if (core_unit) - IOVEC_SET_STRING(iovec[j++], core_unit); + } else if (cg_pid_get_user_unit(pid, &t) >= 0) { + core_unit = strappend("COREDUMP_USER_UNIT=", t); + free(t); } + if (core_unit) + IOVEC_SET_STRING(iovec[j++], core_unit); + /* OK, now we know it's not the journal, hence make use of * it */ log_set_target(LOG_TARGET_JOURNAL_OR_KMSG); diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c index 034fde6624..7dacccf6af 100644 --- a/src/shared/logs-show.c +++ b/src/shared/logs-show.c @@ -954,7 +954,7 @@ int show_journal_by_user_unit( uid_t uid, OutputFlags flags) { - _cleanup_free_ char *m1 = NULL, *m2 = NULL, *m3 = NULL; + _cleanup_free_ char *m1 = NULL, *m2 = NULL, *m3 = NULL, *m4 = NULL; sd_journal *j = NULL; int r; @@ -972,7 +972,8 @@ int show_journal_by_user_unit( if (asprintf(&m1, "_SYSTEMD_USER_UNIT=%s", unit) < 0 || asprintf(&m2, "USER_UNIT=%s", unit) < 0 || - asprintf(&m3, "_UID=%d", uid) < 0) { + asprintf(&m3, "COREDUMP_USER_UNIT=%s", unit) < 0 || + asprintf(&m4, "_UID=%d", uid) < 0) { r = -ENOMEM; goto finish; } @@ -985,7 +986,7 @@ int show_journal_by_user_unit( r = sd_journal_add_match(j, m1, 0); if (r < 0) goto finish; - r = sd_journal_add_match(j, m3, 0); + r = sd_journal_add_match(j, m4, 0); if (r < 0) goto finish; @@ -996,9 +997,20 @@ int show_journal_by_user_unit( r = sd_journal_add_match(j, m2, 0); if (r < 0) goto finish; + r = sd_journal_add_match(j, m4, 0); + if (r < 0) + goto finish; + + /* Look for coredumps of the service */ + r = sd_journal_add_disjunction(j); + if (r < 0) + goto finish; r = sd_journal_add_match(j, m3, 0); if (r < 0) goto finish; + r = sd_journal_add_match(j, m4, 0); + if (r < 0) + goto finish; r = show_journal(f, j, mode, n_columns, not_before, how_many, flags); if (r < 0) |