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.
This commit is contained in:
William Hubbs
2017-10-26 13:11:12 -05:00
parent 667a09983c
commit 82da844b42
2 changed files with 15 additions and 17 deletions

View File

@@ -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
}