svc

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

чување 1866a36872d6513a140feb075b2a4bce7451df20
родитељ e9af41b712a178103e08d98487c080c3e84a8567
Аутор: Страхиња Радић <contact@strahinja.org>
Датум:   Wed, 20 Jul 2022 12:08:28 +0200

Add commands to service and make everything consistent; adjust hwclock for sbase version; add metalog, sdhcp

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

Diffstat:
Mbin/service | 129+++++++++++++++++++++++++++++++++++++++++++++++++------------------------------
Asvc.d/avail/sdhcp | 59+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msvc.d/default/crond | 4++--
Msvc.d/default/hwclock | 4++--
Asvc.d/default/metalog | 2++
Asvc.d/default/sdhcp | 2++
измењених датотека: 6, додавања: 148(+), брисања: 52(-)

diff --git a/bin/service b/bin/service @@ -7,12 +7,19 @@ # 1: Redundant # 2: Error -[ -e /lib/g_fun.sh ] && . /lib/g_fun.sh +BASEDIR=/bin/svc.d + +if [ -e /lib/g_fun.sh ]; then + . /lib/g_fun.sh +else + echo /lib/g_fun.sh missing >&2 + exit 2 +fi usage() { - printf "usage: %s [all|activate|deactivate|exists|list|start|stop|"\ -"restart] service\n" "${0##*/}" >&2 + printf "usage: %s [a(ctivated?)|d(eactivate)|e(xists)|l(ist)|"\ +"sta(rt)|sto(p)|r(estart)] [service|all]\n" "${0##*/}" >&2 } if [ $# -lt 2 ]; then @@ -23,55 +30,81 @@ fi cmd="$1" service="$2" -errno() +seterrno() { return $1 } -exists=0 -if [ -z "${service}" ]; then +doservice() +{ + local cmd=$1 service=$2 exists=0 nooutcome=0 errno stop=0 + case "${cmd}" in - ac*) cmd=all;; - *) ;; + a*) msg serv "Activating %s\t\t\t" ${service##*/} + svc -a "${service}";; + d*) msg serv "Deactivating %s\t\t\t" ${service##*/} + svc -d "${service}";; + e*) msg serv "Exists %s?\t\t\t" ${service##*/} + exists=1 + svc -e "${service}";; + l*) svc -l + nooutcome=1;; + sta*) msg serv "Starting %s\t\t\t" ${service##*/} + svc -s "${service}";; + sto*) msg serv "Stopping %s\t\t\t" ${service##*/} + svc -k "${service}" + stop=1;; + r*) msg serv "Restarting %s\t\t\t" ${service##*/} + svc -r "${service}";; + *) msg serv "What to do with %s?\t\t\t" ${service##*/} + seterrno 3;; + esac + errno=$? + if [ "${nooutcome}" -eq 1 ]; then + return "${errno}" + else + case ${errno} in + 0) if [ "${exists}" -eq 1 ]; then + printf "${green}( ${white}YE${norm} ${green})${norm}\n" + else + printf "${green}( ${white}OK${norm} ${green})${norm}\n" + fi;; + 1) if [ "${stop}" -eq 1 ]; then + printf "${green}(NOTR)${norm}\n" + else + printf "${green}(RNNG)${norm}\n" + fi + return 1;; + 2) if [ "${exists}" -eq 1 ]; then + printf "${green}( ${lred}NO${norm} ${green})${norm}\n" + else + printf "${green}(${lred}FAIL${norm}${green})${norm}\n" + fi + return 2;; + 3) printf "${green}(${lred}FAIL${norm}${green})${norm}\n" + usage + return 3;; + *) printf "${green}(${yellow} ?? ${norm}${green})${norm}\n" + return 2;; esac + fi +} + +if [ "${service}" = "all" ] && \ + [ "$(echo ${cmd} | sed 's/\(.\).*/\1/')" = "a" ] && \ + [ "$(echo ${cmd} | sed 's/.*\(.\)$/\1/')" != "d" ] +then + find ${BASEDIR}/avail -type f | \ + while read -r service; do + doservice "${cmd}" "${service##*/}" + done +elif [ "${service}" = "all" ] && \ + [ "$(echo ${cmd} | sed 's/\(.\).*/\1/')" != "l" ] +then + find ${BASEDIR}/run -type l | \ + while read -r service; do + doservice "${cmd}" "${service##*/}" + done +else + doservice "${cmd}" "${service}" fi -case "${cmd}" in -al*) svc -a;; -ac*) msg serv "Activating %s\t\t\t" ${service##*/} - svc -a "${service}";; -d*) msg serv "Deactivating %s\t\t\t" ${service##*/} - svc -d "${service}";; -e*) msg serv "Exists %s?\t\t\t" ${service##*/} - exists=1 - svc -e "${service}";; -l*) svc -l;; -sta*) msg serv "Starting %s\t\t\t" ${service##*/} - svc -s "${service}";; -sto*) msg serv "Stopping %s\t\t\t" ${service##*/} - svc -k "${service}";; -r*) msg serv "Restarting %s\t\t\t" ${service##*/} - svc -r "${service}";; -*) msg serv "What to do with %s?\t\t\t" ${service##*/} - errno 3;; -esac -case $? in - 0) - if [ "${exists}" -eq 1 ]; then - printf "${green}( ${white}YES${norm} ${green})${norm}\n" - else - printf "${green}( ${white}OK${norm} ${green})${norm}\n" - fi;; - 1) printf "${green}(RNNG)${norm}\n" - exit 1;; - 2) if [ "${exists}" -eq 1 ]; then - printf "${green}( ${lred}NO${norm} ${green})${norm}\n" - else - printf "${green}(${lred}FAIL${norm}${green})${norm}\n" - fi - exit 2;; - 3) printf "${green}(${lred}FAIL${norm}${green})${norm}\n" - usage - exit 3;; - *) printf "${green}(${yellow} ?? ${norm}${green})${norm}\n" - exit 2;; -esac diff --git a/svc.d/avail/sdhcp b/svc.d/avail/sdhcp @@ -0,0 +1,59 @@ +#!/bin/sh + +svc=sdhcp +svcbin=/bin/sdhcp + +. /bin/svc.d/default/${svc} + +if [ -z "${PIDFILE}" ]; then + exit 2 +fi + +case $1 in + -e) set -x + if [ ! -e "${PIDFILE}" ]; then + exit 2 + elif [ -z "$(ps -ef | awk '{print $2}' | \ + grep $(<"${PIDFILE}"))" ]; then + exit 2 + fi + set +x;; + -s) ${svcbin} ${PARAMS} >/dev/null 2>&1 &;; + -k) set -x + if [ ! -e "${PIDFILE}" ]; then + exit 1 + elif [ -z "$(ps -ef | awk '{print $2}' | \ + grep $(<"${PIDFILE}"))" ] + then + rm "${PIDFILE}" + exit 1 + else + kill $(<"${PIDFILE}") >/dev/null 2>&1 + if [ -n "$(ps -ef | awk '{print $2}' | \ + grep $(<"${PIDFILE}"))" ] + then + kill -9 $(<"${PIDFILE}") >/dev/null 2>&1 \ + || exit 2 + fi + rm "${PIDFILE}" + fi + ps -ef | grep sdhcp + set +x;; + -r) if [ -e "${PIDFILE}" ]; then + if [ -z "$(ps -ef | awk '{print $2}' | \ + grep $(<"${PIDFILE}"))" ] + then + rm "${PIDFILE}" + else + kill $(<"${PIDFILE}") >/dev/null 2>&1 + if [ -n "$(ps -ef | awk '{print $2}' | \ + grep $(<"${PIDFILE}"))" ] + then + kill -9 $(<"${PIDFILE}") \ + >/dev/null 2>&1 || exit 2 + fi + rm "${PIDFILE}" + fi + fi + ${svcbin} ${PARAMS} >/dev/null 2>&1 &;; +esac diff --git a/svc.d/default/crond b/svc.d/default/crond @@ -1,2 +1,2 @@ -PARAMS="-s /etc/cron/cron.d -c /var/spool/cron -t /var/spool/cron -S -l info" - +PARAMS="-S -l info" +LOGFILE=/var/log/crond.log diff --git a/svc.d/default/hwclock b/svc.d/default/hwclock @@ -1,3 +1,3 @@ -# --utc or --localtime -PARAMS="--utc" +# sbase hwclock only has UTC support +PARAMS="-u /dev/rtc0" diff --git a/svc.d/default/metalog b/svc.d/default/metalog @@ -0,0 +1,2 @@ +PARAMS="-B -g metalog" +PIDFILE=/var/run/metalog.pid diff --git a/svc.d/default/sdhcp b/svc.d/default/sdhcp @@ -0,0 +1,2 @@ +PARAMS="eth0" +PIDFILE=/var/run/sdhcp.pid