https://github.com/Paradigm4/shim
Raw File
Tip revision: d2c3a4d06b9219f052953c6dc054eb748983ead9 authored by Rares Vernica on 03 June 2019, 01:28:02 UTC
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
back to top