svc

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

чување ec9a4789890f97be24954888df1ee174a7d8a681
родитељ 7c865a28dae67b9f0c749caeac158c14e3623502
Аутор: Страхиња Радић <contact@strahinja.org>
Датум:   Sun, 17 Jul 2022 18:09:58 +0200

Changes for galeb (mostly related to exit codes)

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

Diffstat:
Mbin/service | 26+++++++++++---------------
Mbin/svc | 63+++++++++++++++++++++++++++------------------------------------
Msvc.d/bare.sh | 35+++++++++++++++++++++--------------
измењених датотека: 3, додавања: 59(+), брисања: 65(-)

diff --git a/bin/service b/bin/service @@ -1,29 +1,25 @@ #!/bin/sh +# $?: +# 0: OK +# 1: Redundant +# 2: Error + if [ $# -lt 2 ]; then printf "usage: %s [start|stop|restart] service\n" "$(basename "$0")" \ >&2 - exit 1 + exit 2 fi cmd="$1" service="$2" case "$cmd" in -sta*) - svc -s "$service" - ;; -sto*) - svc -k "$service" - ;; -r*) - svc -r "$service" - ;; -*) - printf "usage: %s [start|stop|restart] service\n" "$(basename "$0")" \ +sta*) svc -s "$service";; +sto*) svc -k "$service";; +r*) svc -r "$service";; +*) printf "usage: %s [start|stop|restart] service\n" "$(basename "$0")" \ >&2 - exit 1 - ;; + exit 2;; esac - diff --git a/bin/svc b/bin/svc @@ -3,6 +3,11 @@ # See LICENSE file for license details. # +# $?: +# 0: OK +# 1: Redundant +# 2: Error + BASEDIR="/bin/svc.d" BASENAME="$(basename $0)" @@ -11,7 +16,7 @@ cd $BASEDIR usage() { printf "usage: %s [-acdklrs] [service]\n" "$BASENAME" >&2 - exit 1 + exit 2 } if [ $# -lt 1 ]; @@ -42,26 +47,25 @@ doservice() { for s in ${services}; do runservice "$s" run "$cmd" - printf "%s: '%s' %s.\n" \ - "$BASENAME" "$s" "$cmd" + #printf "%s: '%s' %s.\n" \ + # "$BASENAME" "$s" "$cmd" done else if [ -x "avail/$service" ]; then runservice "$service" avail "$cmd" - printf "%s: '%s' %s.\n" \ - "$BASENAME" "$service" "$cmd" + #printf "%s: '%s' %s.\n" \ + # "$BASENAME" "$service" "$cmd" else printf "%s: '%s' is not available or executable.\n" \ "$BASENAME" "$service" >&2 - exit 1 + exit 2 fi fi } case "$1" in - -a) - if [ $# -gt 1 ] && [ -e "avail/$2" ]; + -a) if [ $# -gt 1 ] && [ -e "avail/$2" ]; then ln -sf "../avail/$2" "run/$2" printf "%s: '%s' activated.\n" \ @@ -69,16 +73,12 @@ case "$1" in else cd run ls . - fi - ;; - -c) - [ -d "$BASEDIR" ] || mkdir -p "$BASEDIR" + fi;; + -c) [ -d "$BASEDIR" ] || mkdir -p "$BASEDIR" [ -d "$BASEDIR/avail" ] || mkdir -p "$BASEDIR/avail" [ -d "$BASEDIR/default" ] || mkdir -p "$BASEDIR/default" - [ -d "$BASEDIR/run" ] || mkdir -p "$BASEDIR/run" - ;; - -d) - if [ $# -gt 1 ] && [ -e "run/$2" ]; + [ -d "$BASEDIR/run" ] || mkdir -p "$BASEDIR/run";; + -d) if [ $# -gt 1 ] && [ -e "run/$2" ]; then rm -f "run/$2" printf "%s: '%s' deactivated.\n" \ @@ -86,30 +86,21 @@ case "$1" in else printf "%s: No service given or service is not marked as to run.\n" \ "$BASENAME" >&2 - exit 1 - fi - ;; - -k|-s) - doservice "$1" "$2" - ;; - -l) - cd avail - ls . - ;; - -r) - if [ $# -gt 1 ]; + exit 2 + fi;; + -k|-s) doservice "$1" "$2";; + -l) cd avail + ls .;; + -r) if [ $# -gt 1 ]; then - set -x + #set -x svc -k "$2" svc -s "$2" else printf "%s: please give a service name.\n" \ "$BASENAME" >&2 - exit 1 - fi - ;; - *) - usage - ;; + exit 2 + fi;; + *) usage + exit 2;; esac - diff --git a/svc.d/bare.sh b/svc.d/bare.sh @@ -1,17 +1,22 @@ #!/bin/sh -[ $# -eq 0 ] && SERVICE="$0" +# $?: +# 0: OK +# 1: Redundant +# 2: Error + +[ $# -eq 0 ] && SERVICE="${0##*/}" if [ $# -gt 0 ]; then - SERVICE="$1" + SERVICE="${1##*/}" shift 1 fi [ -e "/bin/svc.d/default/$SERVICE" ] && . "/bin/svc.d/default/$SERVICE" BIN="" -for p in /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin; +for p in /local/bin /bin /sucks/bin do if [ -x "$p/$SERVICE" ]; then @@ -19,19 +24,21 @@ do break fi done -[ -z "$BIN" ] && exit 1 +[ -z "$BIN" ] && exit 2 PID=$(pidof -o %PPID $BIN) case $1 in - -s) - [ -z "$PID" ] && $BIN $PARAMS; - ;; - -k) - [ -n "$PID" ] && kill -9 $PID &> /dev/null; - ;; - *) - echo "usage: $0 -s|-k" - exit 1 + -s) if [ -z "$PID" ]; then + $BIN $PARAMS + else + exit 1 + fi;; + -k) kill $PID &> /dev/null + if [ -n "$PID" ]; then + kill -9 $PID &> /dev/null || exit 2 + else + exit 2 + fi;; + *) exit 2;; esac -