rc-status -c now lists services that have crashed.
It returns 0 if there are crashed services, otherwise 1. This it easy to restart crashed services automatically. More for #120.
This commit is contained in:
parent
e2629b0a3b
commit
9966a902ab
@ -1,4 +1,4 @@
|
||||
.\" Copyright 2007-2008 Roy Marples
|
||||
.\" Copyright 2007-2009 Roy Marples
|
||||
.\" All rights reserved
|
||||
.\"
|
||||
.\" Redistribution and use in source and binary forms, with or without
|
||||
@ -22,7 +22,7 @@
|
||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.Dd Arp 9, 2008
|
||||
.Dd April 24, 2008
|
||||
.Dt RC-STATUS 8 SMM
|
||||
.Os OpenRC
|
||||
.Sh NAME
|
||||
@ -30,7 +30,7 @@
|
||||
.Nd show status info about runlevels
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Op Fl alsuC
|
||||
.Op Fl aclsuC
|
||||
.Op Ar runlevel
|
||||
.Sh DESCRIPTION
|
||||
.Nm
|
||||
@ -43,6 +43,8 @@ The options are as follows:
|
||||
.Bl -tag -width ".Fl test , test string"
|
||||
.It Fl a , -all
|
||||
Show all runlevels and their services.
|
||||
.It Fl c , -crashed
|
||||
List all services that have crashed.
|
||||
.It Fl l , -list
|
||||
List all defined runlevels.
|
||||
.It fl r , -runlevel
|
||||
@ -57,6 +59,9 @@ Disable color output.
|
||||
Show information only for the named
|
||||
.Ar runlevel .
|
||||
.El
|
||||
.Sh EXIT STATUS
|
||||
.Nm
|
||||
exits 0, except when checking for crashed services and it doesn't find any.
|
||||
.Sh SEE ALSO
|
||||
.Xr rc 8 ,
|
||||
.Xr rc-update 8
|
||||
|
@ -172,9 +172,10 @@ print_services(const char *runlevel, RC_STRINGLIST *svcs)
|
||||
|
||||
#include "_usage.h"
|
||||
#define extraopts "[runlevel1] [runlevel2] ..."
|
||||
#define getoptstring "alrsu" getoptstring_COMMON
|
||||
#define getoptstring "aclrsu" getoptstring_COMMON
|
||||
static const struct option longopts[] = {
|
||||
{"all", 0, NULL, 'a'},
|
||||
{"crashed", 0, NULL, 'c'},
|
||||
{"list", 0, NULL, 'l'},
|
||||
{"runlevel", 0, NULL, 'r'},
|
||||
{"servicelist", 0, NULL, 's'},
|
||||
@ -183,6 +184,7 @@ static const struct option longopts[] = {
|
||||
};
|
||||
static const char * const longopts_help[] = {
|
||||
"Show services from all run levels",
|
||||
"Show crashed services",
|
||||
"Show list of run levels",
|
||||
"Show the name of the current runlevel",
|
||||
"Show service list",
|
||||
@ -196,7 +198,7 @@ rc_status(int argc, char **argv)
|
||||
{
|
||||
RC_STRING *s, *l, *t;
|
||||
char *p, *runlevel = NULL;
|
||||
int opt, aflag = 0;
|
||||
int opt, aflag = 0, retval = 0;
|
||||
|
||||
test_crashed = _rc_can_find_pids();
|
||||
|
||||
@ -207,10 +209,14 @@ rc_status(int argc, char **argv)
|
||||
aflag++;
|
||||
levels = rc_runlevel_list();
|
||||
break;
|
||||
case 'l':
|
||||
levels = rc_runlevel_list();
|
||||
TAILQ_FOREACH (l, levels, entries)
|
||||
printf("%s\n", l->value);
|
||||
case 'c':
|
||||
services = rc_services_in_state(RC_SERVICE_STARTED);
|
||||
retval = 1;
|
||||
TAILQ_FOREACH(s, services, entries)
|
||||
if (rc_service_daemons_crashed(s->value)) {
|
||||
printf("%s\n", s->value);
|
||||
retval = 0;
|
||||
}
|
||||
goto exit;
|
||||
/* NOTREACHED */
|
||||
case 'r':
|
||||
@ -344,5 +350,5 @@ exit:
|
||||
rc_deptree_free(deptree);
|
||||
#endif
|
||||
|
||||
return(EXIT_SUCCESS);
|
||||
return retval;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user