svc

Управљање сервисима
git clone https://git.sr.ht/~strahinja/svc
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

bare.sh (1587B)


      1 #!/bin/sh
      2 
      3 # $?:
      4 #    0: OK
      5 #    1: Redundant
      6 #    2: Error
      7 
      8 [ $# -eq 0 ] && SERVICE="${0##*/}"
      9 
     10 if [ $# -gt 0 ];
     11 then
     12 	SERVICE="${1##*/}"
     13 	shift 1
     14 fi
     15 
     16 [ -e "/bin/svc.d/default/$SERVICE" ] && . "/bin/svc.d/default/$SERVICE"
     17 
     18 BIN=""
     19 for p in /local/bin /bin /sucks/bin
     20 do
     21 	if [ -x "$p/$SERVICE" ];
     22 	then
     23 		BIN="$p/$SERVICE"
     24 		break
     25 	fi
     26 done
     27 [ -z "${BIN}" ] && exit 2
     28 [ -n "${RUNDIR}" ] && mkdir -p "${RUNDIR}"
     29 
     30 PID=$(pgrep -f ${BIN})
     31 case $1 in
     32 	-e)	if [ -z "${PID}" ]; then
     33 			exit 2
     34 		fi;;
     35 	-s)	$0 "${SERVICE}" -e
     36 		case $? in
     37 			0)	return 1;;
     38 			2)	${BIN} ${PARAMS} >/dev/null 2>&1 &
     39 # 				if [ -n "${RUNDIR}" ] && [ -n "${PIDFILE}" ] \
     40 # 					&& [ -z "$(find "${RUNDIR}"/ \
     41 # 						-name ${PIDFILE##*/})" ]
     42 # 				then
     43 # 					while [ -z "$(inotifywait -e create,modify \
     44 # 						${RUNDIR} 2>/dev/null \
     45 # 						| grep ${PIDFILE##*/})" ]
     46 # 					do done
     47 				#elif [ -n "${STARTDELAY}" ]; then
     48 				if [ -n "${STARTDELAY}" ]; then
     49 					/bin/usleep "${STARTDELAY}"
     50 				fi
     51 				$0 "${SERVICE}" -e
     52 				errno=$?
     53 				if [ -n "${RUNDIR}" ]; then
     54 					case $errno in
     55 					0) :> "${RUNDIR}/${SERVICE}.up";;
     56 					*) rm "${RUNDIR}/${SERVICE}.up" \
     57 						2>/dev/null;;
     58 					esac
     59 				fi;;
     60 			*)	return $?;;
     61 		esac;;
     62 	-k)	$0 "${SERVICE}" -e
     63 		case $? in
     64 			2)	return 1;;
     65 			0)	pkill -f "${BIN}" >/dev/null 2>&1
     66 				if [ -n "$(pgrep -f "${BIN}" 2>/dev/null)" ]
     67 				then
     68 					pkill -9 -f "${BIN}" >/dev/null 2>&1 \
     69 						|| exit 2
     70 				fi
     71 				if [ -n "${RUNDIR}" ]; then
     72 					rm "${RUNDIR}/${SERVICE}.up"
     73 				fi;;
     74 			*)	return $?;;
     75 		esac;;
     76 	-r)	$0 "${SERVICE}" -k
     77 		$0 "${SERVICE}" -s;;
     78 	*)	exit 2;;
     79 esac