docker-image-sybase/sqlanywhere16/bin64/dbsvc_scripts/svc_t_common

149 lines
3.7 KiB
Plaintext

# iAnywhere Solutions, Inc. One Sybase Drive, Dublin, CA 94568, USA
# Copyright (c) 2001-2008, iAnywhere Solutions, Inc. Portions copyright (c)
# 1988-2008, Sybase, Inc. All rights preserved. All unpublished rights reserved.
svc_t_iface_load()
##################
# get interface to tool
# Allow $1 to fall back on global variable DBSVC_TYPE
{
local svc_tool_iface
if [ -n "$1" ]; then
svc_tool_iface=`tolower $1`
else
svc_tool_iface=`tolower ${DBSVC_TYPE}`
fi
. "${DBSVC_DIR}/dbsvc_scripts/svc_t_${svc_tool_iface}"
}
svc_t_iface_init()
##################
# $1 : DBSVC_TYPE
{
svc_t_iface_load $1
svc_t_init
}
# Multiple instances of our tools may be running as services.
# Need to take into account the command line given to each tool,
# to find the right one.
# The following finds the pid of the process with the command line that
# matches the one we are looking for.
# Returns:
# sets PROCID and echoes back the pid of the process
svc_t_getpid()
##############
{
# get our command line and "hash" it into something that
# matches the format of the commandline in /proc/<pid>/cmdline,
# with grep-unfriendly characters removed
local pcmdline
local CMD=`svc_t_toolname`
local TCMD=`echo "$SVC_TOOL_CMDLINE" | sed 's/ /\x00/g' | sed 's/-//g' | sed 's/\"//g'`
local pid=$PROCID
PROCID=
if [ ! -z "$pid" ]; then
# maybe we're here a second time ... check last time's PID
PRFILE="/proc/"$pid"/cmdline"
if [ -r $PRFILE ]; then
pcmdline=`cat $PRFILE | sed 's/-//g' | sed 's/ //g' `
RET=`echo $pcmdline | grep -v dbsvc | grep -v '/etc/init.d/SA_' | grep $TCMD 2>/dev/null`
if [ "$RET" != "" ]; then
RET=`grep $CMD $PRFILE`
if [ "$RET" != "" ]; then
PROCID=$pid
fi
fi
fi
fi
if [ "$PROCID" = "" ] && [ "$PIDFILEN" != "" ]; then
# check the pid specified in the PIDFILE first to see if we have a match
if [ -f "$PIDFILEN" ]; then
pid=`cat "$PIDFILEN"`
PRFILE="/proc/"$pid"/cmdline"
if [ -r $PRFILE ]; then
pcmdline=`cat $PRFILE | sed 's/-//g' | sed 's/ //g' `
RET=`echo $pcmdline | grep -v dbsvc | grep -v '/etc/init.d/SA_' | grep $TCMD 2>/dev/null`
if [ "$RET" != "" ]; then
RET=`grep $CMD $PRFILE`
if [ "$RET" != "" ]; then
PROCID=$pid
fi
fi
fi
fi
fi
if [ "$PROCID" = "" ]; then
# need to do it the hard way - check all of the /proc/.../ directories
for i in `ls -U -p /proc | grep /`; do
PRFILE="/proc/"$i"cmdline"
if [ -r $PRFILE ]; then
pcmdline=`cat $PRFILE | sed 's/-//g' | sed 's/ //g' `
RET=`echo $pcmdline | grep -v dbsvc | grep -v '/etc/init.d/SA_' | grep $TCMD 2>/dev/null`
if [ "$RET" != "" ]; then
RET=`grep $CMD $PRFILE`
if [ "$RET" != "" ]; then
PROCID=`echo $i | awk -F "/" '{print $1}'`
break
fi
fi
fi
done
fi
echo $PROCID
}
svc_t_process_cmdline_add_ud()
##############################
# in: cmdline
# out: add -ud if not already there
{
local MY_CMDLINE=$*
# add -ud if not there
local SAW_UD=0
while [ ! -z "$1" ]; do
case $1 in
-ud )
SAW_UD=1
;;
esac
shift
done
if [ $SAW_UD -eq 0 ]; then
MY_CMDLINE="$MY_CMDLINE -ud"
fi
echo "$MY_CMDLINE"
}
svc_t_status()
##############
# Most tools check status by verifying the process is still running
{
local procid=`svc_t_getpid`
if [ -z "$procid" ]; then
false
else
true
fi
echo $?
}
svc_t_stopcmd()
###############
# Most tools stop by sending a HUP signal
{
local procid=`svc_t_getpid`
[ -n "$procid" ] && kill -HUP ${procid}
}
svc_t_checkbinary()
###################
{
# some validation
[ ! -r `svc_t_toolpath` ] && output_msg "${INF_BINARYNOTFOUND}" # ${DBSVC_TYPE}
}