Skip to content

Commit

Permalink
systemctl: make sure "systemctl -M status" shows cgroup tree of conta…
Browse files Browse the repository at this point in the history
…iner not host

This shows the cgroup tree of the root slice of the container now, by
querying the cgroup pid tree via the bus instead of going directly to
the cgroupfs.

A fallback is kept for really old systemd versions where querying the
PID tree was not available.

Fixes: #20958
  • Loading branch information
poettering committed Oct 28, 2021
1 parent 35ac026 commit 038cae0
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions src/systemctl/systemctl-show.c
Expand Up @@ -29,6 +29,7 @@
#include "process-util.h"
#include "signal-util.h"
#include "sort-util.h"
#include "special.h"
#include "string-table.h"
#include "systemctl-list-machines.h"
#include "systemctl-list-units.h"
Expand Down Expand Up @@ -2043,8 +2044,10 @@ static int show_all(
static int show_system_status(sd_bus *bus) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
_cleanup_(machine_info_clear) struct machine_info mi = {};
static const char prefix[] = " ";
_cleanup_free_ char *hn = NULL;
const char *on, *off;
unsigned c;
int r;

hn = gethostname_malloc();
Expand Down Expand Up @@ -2087,16 +2090,15 @@ static int show_system_status(sd_bus *bus) {
FORMAT_TIMESTAMP_RELATIVE(mi.timestamp));

printf(" CGroup: %s\n", empty_to_root(mi.control_group));
if (IN_SET(arg_transport,
BUS_TRANSPORT_LOCAL,
BUS_TRANSPORT_MACHINE)) {
static const char prefix[] = " ";
unsigned c;

c = LESS_BY(columns(), strlen(prefix));
c = LESS_BY(columns(), strlen(prefix));

r = unit_show_processes(bus, SPECIAL_ROOT_SLICE, mi.control_group, prefix, c, get_output_flags(), &error);
if (r == -EBADR && arg_transport == BUS_TRANSPORT_LOCAL) /* Compatibility for really old systemd versions */
show_cgroup(SYSTEMD_CGROUP_CONTROLLER, strempty(mi.control_group), prefix, c, get_output_flags());
}
else if (r < 0)
log_warning_errno(r, "Failed to dump process list for '%s', ignoring: %s",
arg_host ?: hn, bus_error_message(&error, r));

return 0;
}
Expand Down

0 comments on commit 038cae0

Please sign in to comment.