https://github.com/Paradigm4/shim
Tip revision: d2c3a4d06b9219f052953c6dc054eb748983ead9 authored by Rares Vernica on 03 June 2019, 01:28:02 UTC
Suppress log output
Suppress log output
Tip revision: d2c3a4d
shimsvc
#!/bin/bash
#
### BEGIN INIT INFO
# Provides: shimsvc
# Required-Start: $syslog $local_fs
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: shim
# Description: A simple SciDB web service.
### END INIT INFO
# Locate scidb heuristics
SCIDB_DIR=$(dirname $(dirname $(which scidb 2>/dev/null) 2>/dev/null) 2>/dev/null)
if test -z "${SCIDB_DIR}"; then
if test -d /opt/scidb; then
SCIDB_DIR=$(dirname $(dirname $(find /opt/scidb/ -name shim 2>/dev/null | tail -n 1) 2>/dev/null) 2>/dev/null)
# SCIDB_DIR=$(ls -t /opt/scidb | head -n 1)
# if test -n "${SCIDB_DIR}"; then SCIDB_DIR="/opt/scidb/${SCIDB_DIR}";fi
fi
if test -z "${SCIDB_DIR}"; then
echo "Error, can't find SciDB, is it in the PATH?" 2>&1
exit 1
fi
fi
export LD_LIBRARY_PATH="${SCIDB_DIR}/lib:${SCIDB_DIR}/3rdparty/boost/lib"
export SHIM="${SCIDB_DIR}/bin/shim"
# Check for configuration
PORTS=
AUTH=
SCIDBPORT=
TMPD=
USER=root
AIO=
if test -f "/var/lib/shim/conf"; then
PORTS="$(cat /var/lib/shim/conf | sed -n /^ports/p | cut -d '=' -f 2 | tr -d '\r')"
SCIDBPORT="$(cat /var/lib/shim/conf | sed -n /^scidbport/p | cut -d '=' -f 2 | tr -d '\r')"
USER="$(cat /var/lib/shim/conf | sed -n /^user/p | cut -d '=' -f 2 | tr -d '\r')"
TMPD="$(cat /var/lib/shim/conf | sed -n /^tmp/p | cut -d '=' -f 2 | tr -d '\r')"
MAX_SESSIONS="$(cat /var/lib/shim/conf | sed -n /^max/p | cut -d '=' -f 2 | tr -d '\r')"
TIMEOUT="$(cat /var/lib/shim/conf | sed -n /^time/p | cut -d '=' -f 2 | tr -d '\r')"
SAVE_INSTANCE_ID="$(cat /var/lib/shim/conf | sed -n /^instance/p | cut -d '=' -f 2 | tr -d '\r')"
AIO="$(cat /var/lib/shim/conf | sed -n /^aio/p | cut -d '=' -f 2 | tr -d '\r')"
# Build up shim command line options
test -n "${PORTS}" && PORTS="-p ${PORTS}"
test -n "${TMPD}" && TMPD="-t ${TMPD}"
test -n "${SCIDBHOST}" && SCIDBHOST="-n ${SCIDBHOST}"
test -n "${SCIDBPORT}" && SCIDBPORT="-s ${SCIDBPORT}"
test -n "${MAX_SESSIONS}" && MAX_SESSIONS="-m ${MAX_SESSIONS}"
test -n "${TIMEOUT}" && TIMEOUT="-o ${TIMEOUT}"
test -n "${SAVE_INSTANCE_ID}" && SAVE_INSTANCE_ID="-i ${SAVE_INSTANCE_ID}"
test -n "${AIO}" && AIO="-a"
fi
case $1 in
test)
echo "Command line"
echo "su $USER -c \"'${SHIM}' $PORTS $SCIDBPORT $TMPD $MAX_SESSIONS $TIMEOUT $SAVE_INSTANCE_ID $AIO\""
;;
start)
echo "Starting shim"
su $USER -c "'${SHIM}' $PORTS $SCIDBPORT $TMPD $MAX_SESSIONS $TIMEOUT $SAVE_INSTANCE_ID $AIO"
;;
restart)
$0 stop
$0 start
;;
status)
Q=$(ps aux | egrep -v 'grep|shimsvc' | grep shim 2>/dev/null)
if test -z "${Q}"; then
echo "Shim process not found";
exit 1;
fi
echo "Shim process ${Q}"; exit 0
;;
stop)
echo "Stopping shim"
P=$(cat /var/run/shim.pid 2>/dev/null)
if test -z "${P}"; then
killall shim 2>/dev/null || echo >/dev/null
else
kill $P 2>/dev/null || echo "Couldn't kill process $P (privilege error?)"
fi
rm -f /var/run/shim.pid
;;
esac