svc

Unnamed repository; edit this file 'description' to name the repository.
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

чување 68057caf7d5dcb739fe2c24d84cffe0bdde090ef
родитељ 7910ba11a91cdad69f641b986cef3292e70a5b23
Аутор: Страхиња Радић <contact@strahinja.org>
Датум:   Wed, 27 Jul 2022 11:38:25 +0200

Optimize service (re)starting/stopping

Signed-off-by: Страхиња Радић <contact@strahinja.org>

Diffstat:
Mbin/service | 63+++++++++++++++++++++++++++++----------------------------------
Msvc.d/avail/hwclock | 2+-
Msvc.d/bare.sh | 6+-----
измењених датотека: 3, додавања: 31(+), брисања: 40(-)

diff --git a/bin/service b/bin/service @@ -76,30 +76,30 @@ doservice() fi;; l*) nooutcome=1 svc -l;; - sta*) if [ -z "${service}" ]; then - nooutcome=1 + sta*) nooutcome=1 + if [ -z "${service}" ]; then msg err "No service given" exit 2 else - msg serv "Starting %s\t\t\t" ${service##*/} - svc -s "${service}" 2>/dev/null + msg servnl "Starting %s" ${service##*/} + svc -s "${service}" 2>/dev/null & fi;; - sto*) if [ -z "${service}" ]; then - nooutcome=1 + sto*) nooutcome=1 + if [ -z "${service}" ]; then msg err "No service given" exit 2 else stop=1 - msg serv "Stopping %s\t\t\t" ${service##*/} - svc -k "${service}" 2>/dev/null + msg servnl "Stopping %s" ${service##*/} + svc -k "${service}" 2>/dev/null & fi;; - r*) if [ -z "${service}" ]; then - nooutcome=1 + r*) nooutcome=1 + if [ -z "${service}" ]; then msg err "No service given" exit 2 else - msg serv "Restarting %s\t\t\t" ${service##*/} - svc -r "${service}" 2>/dev/null + msg servnl "Restarting %s" ${service##*/} + svc -r "${service}" 2>/dev/null & fi;; *) nooutcome=1 if [ -z "${service}" ]; then @@ -120,9 +120,7 @@ doservice() else printf "${green}(${white} OK ${norm}${green})${norm}\n" fi;; - 1) if [ "${stop}" -eq 1 ]; then - printf "${green}(${gray}NOTR${norm}${green})${norm}\n" - elif [ "${exists}" -eq 1 ]; then + 1) if [ "${exists}" -eq 1 ]; then printf "${green}(${gray}1-ST${norm}${green})${norm}\n" else printf "${green}(${gray}RNNG${norm}${green})${norm}\n" @@ -143,25 +141,22 @@ doservice() fi } -if [ "${service}" = "all" ] && \ - [ "$(echo ${cmd} | sed 's/\(.\).*/\1/')" = "a" ] -then - if [ "$(echo ${cmd} | sed 's/.*\(.\)$/\1/')" != "d" ] - then - find ${BASEDIR}/avail -type f | \ - while read -r service; do - doservice "${cmd}" "${service##*/}" - done - else - doservice "${cmd}" "${service}" - fi -elif [ "${service}" = "all" ] && \ - [ "$(echo ${cmd} | sed 's/\(.\).*/\1/')" != "l" ] -then - find ${BASEDIR}/run -type l | \ - while read -r service; do - doservice "${cmd}" "${service##*/}" - done +if [ "${service}" = "all" ]; then + case ${cmd} in + a*d|l*) doservice "${cmd}" "${service}";; + a*) find ${BASEDIR}/avail -type f | \ + while read -r service; do + doservice "${cmd}" "${service##*/}" + done;; + *) find ${BASEDIR}/run -type l | \ + while read -r service; do + doservice "${cmd}" "${service##*/}" + done + case ${cmd} in + sta*|sto*|r*) sleep 1; service exists all;; + *) ;; + esac;; + esac else doservice "${cmd}" "${service##*/}" fi diff --git a/svc.d/avail/hwclock b/svc.d/avail/hwclock @@ -3,7 +3,7 @@ . /bin/svc.d/default/hwclock case $1 in - -e) ;; # one-shot + -e) exit 1;; # one-shot -s) hwclock -s ${PARAMS} >/dev/null 2>&1 || exit 2;; -k) hwclock -w ${PARAMS} >/dev/null 2>&1 || exit 2;; -r) $0 -k && \ diff --git a/svc.d/bare.sh b/svc.d/bare.sh @@ -35,11 +35,7 @@ case $1 in -s) $0 "${SERVICE}" -e case $? in 0) return 1;; - 2) ${BIN} ${PARAMS} >/dev/null 2>&1 & - if [ -n "${STARTDELAY}" ]; then - /bin/usleep "${STARTDELAY}" - fi - $0 "${SERVICE}" -e;; + 2) ${BIN} ${PARAMS} >/dev/null 2>&1 &;; *) return $?;; esac;; -k) $0 "${SERVICE}" -e