rc-status: add --supervised option to show supervised services

This commit is contained in:
William Hubbs 2018-12-02 10:13:10 -06:00
parent db01442580
commit fa6611b5af
2 changed files with 13 additions and 1 deletions

View File

@ -43,6 +43,8 @@ List all defined runlevels.
Show all manually started services. Show all manually started services.
.It Fl r , -runlevel .It Fl r , -runlevel
Print the current runlevel name. Print the current runlevel name.
.It Fl S , -supervised
Show all supervised services.
.It Fl s , -servicelist .It Fl s , -servicelist
Show all services. Show all services.
.It Fl u , -unused .It Fl u , -unused

View File

@ -29,7 +29,7 @@
const char *applet = NULL; const char *applet = NULL;
const char *extraopts = NULL; const char *extraopts = NULL;
const char *getoptstring = "aclmrsu" getoptstring_COMMON; const char *getoptstring = "aclmrsSu" getoptstring_COMMON;
const struct option longopts[] = { const struct option longopts[] = {
{"all", 0, NULL, 'a'}, {"all", 0, NULL, 'a'},
{"crashed", 0, NULL, 'c'}, {"crashed", 0, NULL, 'c'},
@ -37,6 +37,7 @@ const struct option longopts[] = {
{"manual", 0, NULL, 'm'}, {"manual", 0, NULL, 'm'},
{"runlevel", 0, NULL, 'r'}, {"runlevel", 0, NULL, 'r'},
{"servicelist", 0, NULL, 's'}, {"servicelist", 0, NULL, 's'},
{"supervised", 0, NULL, 'S'},
{"unused", 0, NULL, 'u'}, {"unused", 0, NULL, 'u'},
longopts_COMMON longopts_COMMON
}; };
@ -47,6 +48,7 @@ const char * const longopts_help[] = {
"Show manually started services", "Show manually started services",
"Show the name of the current runlevel", "Show the name of the current runlevel",
"Show service list", "Show service list",
"show supervised services",
"Show services not assigned to any runlevel", "Show services not assigned to any runlevel",
longopts_help_COMMON longopts_help_COMMON
}; };
@ -296,6 +298,14 @@ int main(int argc, char **argv)
printf("%s\n", runlevel); printf("%s\n", runlevel);
goto exit; goto exit;
/* NOTREACHED */ /* NOTREACHED */
case 'S':
services = rc_services_in_state(RC_SERVICE_STARTED);
TAILQ_FOREACH(s, services, entries)
if (rc_service_value_get(s->value, "child_pid")) {
printf("%s\n", s->value);
}
goto exit;
/* NOTREACHED */
case 's': case 's':
services = rc_services_in_runlevel(NULL); services = rc_services_in_runlevel(NULL);
print_services(NULL, services); print_services(NULL, services);