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

182 lines
3.9 KiB
Bash

#!/bin/sh
# 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.
#
# provide boiler-plate start/stop/status/restart for the generated service script
# all required vars should be set in script
#
parse_cl_options_svc()
######################
{
case "$1" in
start | stop | restart )
ACTION=$1
;;
status )
ACTION=sa_status
;;
* )
echo "${INF_USAGE}"
exit 1
;;
esac
}
#
# Implementation of start, stop, status, restart
#
start()
#######
{
local cmd="`svc_t_toolspath` ${SVC_TOOL_CMDLINE}"
local status=`svc_t_status`
local sd_cmd=$START_DAEMON
local pr_num=${PRIORITY##[-+]}
local pr_sign=${PRIORITY%%[0-9]*}
[ -z $pr_sign ] && pr_sign="+"
if [ $status -eq 0 ]; then
$LOG_WARNING_MSG "${INF_ALREADYRUNNING}"
exit 0
fi
echo "${INF_STARTING}"
if is_redhat; then
export NICELEVEL="$PRIORITY"
if [ "$ACCOUNT" != "daemon" ]; then
. /etc/init.d/functions
sd_cmd="daemon --user $ACCOUNT"
fi
$sd_cmd $cmd
elif is_suse; then
# leading -/+ required
local pr=${pr_sign}${pr_num}
# Can't use "bin32s" wrapper with startproc
cmd="`svc_t_toolpath` ${SVC_TOOL_CMDLINE}"
if [ "$ACCOUNT" != "daemon" ]; then
sd_cmd="$sd_cmd -n $pr -u $ACCOUNT"
else
sd_cmd="$sd_cmd -n $pr"
fi
$sd_cmd $cmd
elif is_ubuntu; then
local nice_cmd=""
if [ "$ACCOUNT" != "daemon" ]; then
sd_cmd="sudo -u $ACCOUNT"
$sd_cmd $cmd
if [ $? -eq 0 ]; then
sudo renice $PRIORITY `svc_t_getpid` 2>&1 >/dev/null
fi
else
# prepend nice command if necessary
if [ `eval expr "$pr_num + 0"` != 0 ]; then
nice_cmd="-n $PRIORITY"
fi
$sd_cmd $nice_cmd $cmd
fi
else
# this case will get used for RedFlag
local nice_cmd=""
if [ "$ACCOUNT" != "daemon" ]; then
sd_cmd="su $ACCOUNT -c"
else
sd_cmd="su -c"
fi
# prepend nice command if necessary
if [ `eval expr "$pr_num + 0"` != 0 ]; then
nice_cmd="nice -n $PRIORITY"
fi
$sd_cmd "$nice_cmd $cmd"
fi
# Check if we really started; in some cases the tool will be successfully launched,
# but an error will occur on startup. On RedHat, "runuser" swallows the return
# code in this case. Work around this my checking status after starting.
# This also help customers who have inadvertently given an incorrect command line,
# since when starting the service they will not see any error messages in the
# terminal.
local retcode=$?
status=`svc_t_status`
[ $status -ne 0 ] && retcode=$status
if [ $retcode -eq 0 ]; then
$LOG_SUCCESS_MSG
if [ "$PIDFILEN" != "" ]; then
# record the pid of the process that we just started
sudo echo `svc_t_getpid` >$PIDFILEN 2>/dev/null
fi
return 0
else
$LOG_FAILURE_MSG
if [ "$PIDFILEN" != "" ]; then
# if there was a pid file, get rid of it
if [ -f "$PIDFILEN" ]; then
sudo rm -f $PIDFILEN 2>/dev/null
fi
fi
return 1
fi
} # start
stop()
######
{
local status=`svc_t_status`
if [ $status -ne 0 ]; then
$LOG_WARNING_MSG "${INF_NOTRUNNING}"
exit 0
fi
echo "${INF_STOPPING}"
if [ "$PIDFILEN" != "" ]; then
# if there was a pid file, get rid of it
if [ -f "$PIDFILEN" ]; then
sudo rm -f $PIDFILEN 2>/dev/null
fi
fi
svc_t_stopcmd
if [ $? -eq 0 ]; then
$LOG_SUCCESS_MSG
return 0
else
$LOG_FAILURE_MSG
return 1
fi
} # stop
sa_status()
###########
{
local status=`svc_t_status`
if [ $status -ne 0 ]; then
$LOG_WARNING_MSG "${INF_CHECKING_NF}"
if [ "$PIDFILEN" != "" ]; then
# if there was a pid file, get rid of it
if [ -f "$PIDFILEN" ]; then
sudo rm -f $PIDFILEN 2>/dev/null
fi
fi
else
$LOG_SUCCESS_MSG "${INF_CHECKING_OK}"
fi
return $status
} # sa_status
restart()
#########
{
stop
sleep 5
start
return $?
}