чување 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:
измењених датотека: 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