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