diff options
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}" } |