Blob Blame History Raw
#!/bin/bash
#
# Copyright (C) Mellanox Technologies Ltd. 2001-2020.  ALL RIGHTS RESERVED.
# See file LICENSE for terms.
#
# vma:         Start the VMA Daemon
#
# chkconfig:   345 80 20
# description: This is a daemon which handles the task of \
#              monitoring processes launched under VMA.
#
### BEGIN INIT INFO
# Provides: vma
# Required-Start: $local_fs $syslog
# Required-Stop: $local_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start the VMA Daemon
# Description: This is a daemon which handles the task of
#              monitoring processes launched under VMA.
### END INIT INFO

prefix=@prefix@
exec_prefix=@exec_prefix@
  
RETVAL=0
exefile=vmad
options=
pidfile=/var/run/lock/vmad.lock

# Source function library.
if [[ -s /etc/init.d/functions ]]; then
    # RHEL / CentOS / SL / Fedora.
    . /etc/init.d/functions
    rc_status() { :; }
elif [[ -s /lib/lsb/init-functions ]]; then
    # SLES / openSuSE / Debian.
    . /lib/lsb/init-functions
    success() { log_success_msg; }
    failure() { log_failure_msg; }
elif [[ -s /etc/rc.status ]]; then
    # Older SuSE systems.
    . /etc/rc.status
    failure() { rc_status -v; }
    success() { rc_status -v; }
fi


function check_running()
{
    [ -e ${pidfile} ] &&
        [ "$(readlink "/proc/$(<${pidfile})/exe")" = "@sbindir@/${exefile}" ]
}

function check_permission()
{
    [ "$(id -u)" = "0" ]
}

function do_start()
{
    echo -n "Starting ${exefile}: "

    if check_running; then
        RETVAL=0
    else
        @sbindir@/${exefile} ${options} > /dev/null 2>&1
        RETVAL=$?
    fi
    if [[ $RETVAL -eq 0 ]]; then
        success
        sleep 1
    else
        failure
    fi
    echo
}

function do_stop()
{
    echo -n "Shutting down ${exefile}: "

    RETVAL=0
    if [ $(command -v pkill >/dev/null 2>&1 && echo $?) ]; then
        pkill -INT "${exefile}"
        RETVAL=$?
    fi
    if [[ $RETVAL -ne 0 ]]; then
        killproc "${exefile}" -INT
        RETVAL=$?
    fi
    if [[ $RETVAL -eq 0 ]]; then
        success
        sleep 1
    else
        failure
    fi
    echo
}

function do_status ()
{
    pid="`pidof ${exefile}`"
    ret=$?
    if [ $ret -eq 0 ] ; then
        echo "${exefile} is running... pid=$pid"
    else
        echo "${exefile} is not running."
    fi
}

function do_restart()
{
    do_stop
    do_start
}


function do_check()
{
    if ! check_permission; then
        echo "root permission is required"
        exit 1
    fi
}

case "$1" in
    start)
        do_check
        do_start
        ;;
    stop)
        do_check
        do_stop
        ;;
    status)
        do_status
        ;;
    restart | force-reload)
        do_check
        do_restart
        ;;
    *)
    echo $"Usage: $0 {start|stop|status|restart|force-reload}"
    RETVAL=1
    ;;
esac

exit $RETVAL