diff options
author | William Hubbs <w.d.hubbs@gmail.com> | 2015-05-13 14:47:35 -0500 |
---|---|---|
committer | William Hubbs <w.d.hubbs@gmail.com> | 2015-05-13 16:10:08 -0500 |
commit | e372f97bebd4866633ad56aa5d5b1ae59fa88118 (patch) | |
tree | 629f947f5d8817d305e0b48454024ae8c63e7778 /sh | |
parent | c2abf4b436b8cca8ebed395ff08f5fdc546eadac (diff) |
Fix the s6 handling
This changes the default s6 service directory to /var/svc.d, also
it changes the code to work with the individual services instead of
forcing a rescan when a service is started or stopped.
Diffstat (limited to 'sh')
-rw-r--r-- | sh/s6.sh | 34 |
1 files changed, 18 insertions, 16 deletions
@@ -2,7 +2,7 @@ # Copyright (c) 2015 William Hubbs <w.d.hubbs@gmail.com> # Released under the 2-clause BSD license. -[ -z "${s6_service_path}" ] && s6_service_path="/etc/svc.d/${RC_SVCNAME}" +[ -z "${s6_service_path}" ] && s6_service_path="/var/svc.d/${RC_SVCNAME}" s6_start() { @@ -10,16 +10,17 @@ s6_start() eerror "${s6_service_path} does not exist." return 1 fi - local rc + s6_service_link="${RC_SVCDIR}/s6-scan/${s6_service_path##*/}" ebegin "Starting ${name:-$RC_SVCNAME}" - ln -sf "${s6_service_path}" "${RC_SVCDIR}"/s6-scan - s6-svscanctl -an "${RC_SVCDIR}"/s6-scan - rc=$? + ln -sf "${s6_service_path}" "${s6_service_link}" + s6-svc -u "${s6_service_link}" if [ -n "$s6_svwait_options_start" ]; then - s6-svwait ${s6_svwait_options_start} "${s6_service_path}" - rc=$? + s6-svwait ${s6_svwait_options_start} "${s6_service_link}" fi - eend $rc "Failed to start $RC_SVCNAME" + sleep 1.5 + set -- $(s6-svstat "${s6_service_link}") + [ "$1" = "up" ] + eend $? "Failed to start $RC_SVCNAME" } s6_stop() @@ -28,19 +29,20 @@ s6_stop() eerror "${s6_service_path} does not exist." return 1 fi - local rc + s6_service_link="${RC_SVCDIR}/s6-scan/${s6_service_path##*/}" ebegin "Stopping ${name:-$RC_SVCNAME}" - rm -rf "${RC_SVCDIR}/s6-scan/${s6_service_path##*/}" - s6-svscanctl -an "${RC_SVCDIR}"/s6-scan - rc=$? + s6-svc -d "${s6_service_link}" if [ -n "$s6_svwait_options_stop" ]; then - s6-svwait ${s6_svwait_options_stop} "${s6_service_path}" - rc=$? + s6-svwait ${s6_svwait_options_stop} "${s6_service_link}" fi - eend $rc "Failed to stop $RC_SVCNAME" + sleep 1.5 + set -- $(s6-svstat "${s6_service_link}") + [ "$1" = "down" ] && rm -fr "${s6_service_link}" + eend $? "Failed to stop $RC_SVCNAME" } s6_status() { - s6-svstat "${s6_service_path}" + s6_service_link="${RC_SVCDIR}/s6-scan/${s6_service_path##*/}" + s6-svstat "${s6_service_link}" } |