48 lines
832 B
Bash
48 lines
832 B
Bash
#!/bin/sh
|
|
|
|
SCRIPTPATH="${0%/*}"
|
|
cd "${SCRIPTPATH}/.."
|
|
APPPATH="$(pwd)"
|
|
APPNAME="frpc"
|
|
ARCHBINPATH="${APPPATH}/bin/arch"
|
|
BINPATH="${APPPATH}/bin/${APPNAME}"
|
|
|
|
_arch_select() {
|
|
${BINPATH} -v && return 0
|
|
ls -1 ${ARCHBINPATH}/ | while read archbin
|
|
do
|
|
${ARCHBINPATH}/${archbin} -v && {
|
|
ln -sf ${ARCHBINPATH}/${archbin} ${BINPATH}
|
|
break
|
|
}
|
|
done
|
|
[ -f ${BINPATHA} ] || return 2
|
|
}
|
|
|
|
_start() {
|
|
CONFPATH="${APPPATH}/bin/frpc.ini"
|
|
"${BINPATH}" -c "${CONFPATH}" >/dev/null &
|
|
}
|
|
|
|
_stop() {
|
|
kill -9 "$(pidof ${APPNAME})"
|
|
kill -11 "$(pidof ${APPNAME})"
|
|
}
|
|
|
|
_monitor() {
|
|
pidof "${APPNAME}" 2>/dev/null
|
|
if [ $? -ne 0 ] ; then
|
|
_stop
|
|
_start
|
|
fi
|
|
}
|
|
|
|
## main start
|
|
inter=5
|
|
_arch_select || exit 2
|
|
while [ 1 -eq 1 ]
|
|
do
|
|
_monitor
|
|
sleep "${inter}"
|
|
done
|