chiark / gitweb /
systemctl: don't show cgroup field for a unit if cgroup is empty
[elogind.git] / src / systemctl / systemctl.c
index a605ed91b0aad35c6cdb7fb8820168fff31ae0ac..876e782e7dc83b886df0ebde27a8b26633f73d5c 100644 (file)
@@ -2056,7 +2056,7 @@ static void print_status_info(UnitStatusInfo *i) {
         ExecStatusInfo *p;
         const char *on, *off, *ss;
         usec_t timestamp;
-        char since1[FORMAT_TIMESTAMP_PRETTY_MAX], *s1;
+        char since1[FORMAT_TIMESTAMP_RELATIVE_MAX], *s1;
         char since2[FORMAT_TIMESTAMP_MAX], *s2;
         const char *path;
 
@@ -2125,7 +2125,7 @@ static void print_status_info(UnitStatusInfo *i) {
                     streq_ptr(i->active_state, "activating")    ? i->inactive_exit_timestamp :
                                                                   i->active_exit_timestamp;
 
-        s1 = format_timestamp_pretty(since1, sizeof(since1), timestamp);
+        s1 = format_timestamp_relative(since1, sizeof(since1), timestamp);
         s2 = format_timestamp(since2, sizeof(since2), timestamp);
 
         if (s1)
@@ -2136,7 +2136,7 @@ static void print_status_info(UnitStatusInfo *i) {
                 printf("\n");
 
         if (!i->condition_result && i->condition_timestamp > 0) {
-                s1 = format_timestamp_pretty(since1, sizeof(since1), i->condition_timestamp);
+                s1 = format_timestamp_relative(since1, sizeof(since1), i->condition_timestamp);
                 s2 = format_timestamp(since2, sizeof(since2), i->condition_timestamp);
 
                 if (s1)
@@ -2265,7 +2265,8 @@ static void print_status_info(UnitStatusInfo *i) {
         if (i->status_text)
                 printf("\t  Status: \"%s\"\n", i->status_text);
 
-        if (i->default_control_group) {
+        if (i->default_control_group &&
+            (i->main_pid > 0 || i->control_pid > 0 || cg_is_empty_by_spec(i->default_control_group, false) == 0)) {
                 unsigned c;
 
                 printf("\t  CGroup: %s\n", i->default_control_group);
@@ -3782,7 +3783,16 @@ static int enable_unit(DBusConnection *bus, char **args) {
         }
 
         if (carries_install_info == 0)
-                log_warning("The unit files have no [Install] section. They are not meant to be enabled using systemctl.");
+                log_warning(
+"The unit files have no [Install] section. They are not meant to be enabled\n"
+"using systemctl.\n"
+"Possible reasons for having this kind of units are:\n"
+"1) A unit may be statically enabled by being symlinked from another unit's\n"
+"   .wants/ or .requires/ directory.\n"
+"2) A unit's purpose may be to act as a helper for some other unit which has\n"
+"   a requirement dependency on it.\n"
+"3) A unit may be started when needed via activation (socket, path, timer,\n"
+"   D-Bus, udev, scripted systemctl call, ...).\n");
 
 finish:
         if (m)
@@ -3933,9 +3943,9 @@ static int systemctl_help(void) {
                "  reload [NAME...]                Reload one or more units\n"
                "  restart [NAME...]               Start or restart one or more units\n"
                "  try-restart [NAME...]           Restart one or more units if active\n"
-               "  reload-or-restart [NAME...]     Reload one or more units is possible,\n"
+               "  reload-or-restart [NAME...]     Reload one or more units if possible,\n"
                "                                  otherwise start or restart\n"
-               "  reload-or-try-restart [NAME...] Reload one or more units is possible,\n"
+               "  reload-or-try-restart [NAME...] Reload one or more units if possible,\n"
                "                                  otherwise restart if active\n"
                "  isolate [NAME]                  Start one unit and stop all others\n"
                "  kill [NAME...]                  Send signal to processes of a unit\n"