* [gentoo-commits] proj/openrc:0.34.x commit in: src/rc/, sh/
@ 2017-10-26 19:01 William Hubbs
0 siblings, 0 replies; only message in thread
From: William Hubbs @ 2017-10-26 19:01 UTC (permalink / raw
To: gentoo-commits
commit: 490f855aef581a720c6c0be0d8407fe6d279f9f5
Author: William Hubbs <w.d.hubbs <AT> gmail <DOT> com>
AuthorDate: Thu Oct 26 18:11:12 2017 +0000
Commit: William Hubbs <williamh <AT> gentoo <DOT> org>
CommitDate: Thu Oct 26 18:18:16 2017 +0000
URL: https://gitweb.gentoo.org/proj/openrc.git/commit/?id=490f855a
implement "unsupervised" status
The unsupervised status is to be used when a supervisor of a supervised
service dies but leaves the service daemon itself running.
sh/supervise-daemon.sh | 21 +++++----------------
src/rc/rc-status.c | 11 ++++++++++-
2 files changed, 15 insertions(+), 17 deletions(-)
diff --git a/sh/supervise-daemon.sh b/sh/supervise-daemon.sh
index d2cfe932..e5d8d461 100644
--- a/sh/supervise-daemon.sh
+++ b/sh/supervise-daemon.sh
@@ -58,22 +58,11 @@ supervise_stop()
_check_supervised()
{
- [ "$RC_UNAME" != Linux ] && return 0
- local child_pid="$(service_get_value "child_pid")"
- local pid="$(cat ${pidfile})"
- if [ -n "${child_pid}" ]; then
- if ! [ -e "/proc/${pid}" ] && [ -e "/proc/${child_pid}" ]; then
- if [ -e "/proc/self/ns/pid" ] && [ -e "/proc/${child_pid}/ns/pid" ]; then
- local n1 n2
- n1=$(readlink "/proc/self/ns/pid")
- n2=$(readlink "/proc/${child_pid}/ns/pid")
- if [ "${n1}" = "${n2}" ]; then
- return 1
- fi
- else
- return 1
- fi
- fi
+ local child_pid start_time
+ child_pid="$(service_get_value "child_pid")"
+ start_time="$(service_get_value "start_time")"
+ if [ -n "${child_pid}" ] && [ -n "${start_time}" ]; then
+ return 1
fi
return 0
}
diff --git a/src/rc/rc-status.c b/src/rc/rc-status.c
index 9a094d47..d29f876a 100644
--- a/src/rc/rc-status.c
+++ b/src/rc/rc-status.c
@@ -128,6 +128,8 @@ print_service(const char *service)
{
char status[60];
char uptime [40];
+ char *child_pid = NULL;
+ char *start_time = NULL;
int cols = printf(" %s", service);
const char *c = ecolor(ECOLOR_GOOD);
RC_SERVICE state = rc_service_state(service);
@@ -147,7 +149,14 @@ print_service(const char *service)
rc_service_daemons_crashed(service) &&
errno != EACCES)
{
- snprintf(status, sizeof(status), " crashed ");
+ child_pid = rc_service_value_get(service, "child_pid");
+ start_time = rc_service_value_get(service, "start_time");
+ if (start_time && child_pid)
+ snprintf(status, sizeof(status), " unsupervised ");
+ else
+ snprintf(status, sizeof(status), " crashed ");
+ free(child_pid);
+ free(start_time);
} else {
get_uptime(service, uptime, 40);
snprintf(status, sizeof(status), " started %s", uptime);
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2017-10-26 19:02 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-10-26 19:01 [gentoo-commits] proj/openrc:0.34.x commit in: src/rc/, sh/ William Hubbs
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox