| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 | #!/bin/sh### BEGIN INIT INFO# Provides:          vblade# Required-Start:    $remote_fs $syslog $network# Required-Stop:     $remote_fs $syslog $network# Default-Start:     2 3 4 5# Default-Stop:      0 1 6# Short-Description: vblade exports# Description:       Manage all vlbade exports defined in#                    /etc/vblade.conf.d/### END INIT INFOPATH=/sbin:/usr/sbin:/bin:/usr/binDESC="vblade export"NAME=vbladeVBLADE="/usr/sbin/$NAME"DAEMON=/usr/bin/daemonIONICE=/usr/bin/ionicePIDDIR="/var/run/vblade/"[ -x "$VBLADE" ] || exit 0[ -x "$DAEMON" ] || exit 0mkdir -p "$PIDDIR"# Load the VERBOSE setting and other rcS variables. /lib/init/vars.sh# Define LSB functions. /lib/lsb/init-functions# Start a vblade instance## Return#   0 if daemon has been started#   1 if daemon was already running#   2 if daemon could not be starteddo_start () {    local INSTANCE="$1"    local CONFIG="$2"    sh -n "$CONFIG" 2>/dev/null || return 2    shelf=    slot=    filename=    netif=    options=    ionice=    . "$CONFIG"    [ "$netif" ] || return 2    [ "$shelf" ] || return 2    [ "$slot" ] || return 2    [ "$filename" ] || return 2    if [ "$ionice" ] ; then        if [ -x "$IONICE" ] ; then            ionice="$IONICE $ionice"        else            ionice=        fi    fi    "$DAEMON" \        --running \        --name "$INSTANCE" \        --pidfiles "$PIDDIR" \        && return 1    $ionice "$DAEMON" \        --respawn \        --name "$INSTANCE" \        --pidfiles "$PIDDIR" \        --output daemon.notice \        --stdout daemon.notice \        --stderr daemon.err -- \        $VBLADE $options $shelf $slot $netif $filename || return 2}# Stop a vblade instance## Return#   0 if daemon has been stopped#   1 if daemon was already stopped#   2 if daemon could not be stopped#   other if a failure occurreddo_stop () {    local INSTANCE="$1"    "$DAEMON" \        --running \        --name "$INSTANCE" \        --pidfiles "$PIDDIR" || return 1    "$DAEMON" \        --stop \        --name "$INSTANCE" \        --pidfiles "$PIDDIR" \        --stop || return 2    # Wait until the process is gone    for i in $(seq 1 10) ; do        "$DAEMON" \            --running \            --name "$INSTANCE" \            --pidfiles "$PIDDIR" || return 0    done    return 2}EXIT=0do_action () {    local CONFIG="$1"    INSTANCE="$(basename "${CONFIG%%.conf}")"    case "$ACTION" in        start)            [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$INSTANCE"            do_start "$INSTANCE" "$CONFIG"            case "$?" in                0|1)    [ "$VERBOSE" != no ] && log_end_msg 0 ;;                2)      [ "$VERBOSE" != no ] && log_end_msg 1 ;;            esac            ;;        stop)            [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$INSTANCE"            do_stop "$INSTANCE"            case "$?" in                0|1)    [ "$VERBOSE" != no ] && log_end_msg 0 ;;                2)      [ "$VERBOSE" != no ] && log_end_msg 1 ;;            esac            ;;        status)            status_of_proc -p "$PIDDIR/$INSTANCE.pid" "$VBLADE" "vblade instance $INSTANCE" || EXIT=$?            ;;        restart|force-reload)            log_daemon_msg "Restarting $DESC" "$INSTANCE"            do_stop "$INSTANCE"            case "$?" in                0|1)                    do_start "$INSTANCE" "$CONFIG"                    case "$?" in                        0)  log_end_msg 0 ;;                        *)                            # Old process is still running or                            # failed to start                            log_end_msg 1 ;;                    esac                    ;;                *)                    # Failed to stop                    log_end_msg 1                    ;;                esac            ;;        *)            echo "Usage: /etc/init.d/vblade {start|stop|status|restart|force-reload} [<export> ...]" >&2            exit 3            ;;    esac}ACTION="$1"shiftif [ "$1" ] ; then    while [ "$1" ] ; do        CONFIG="/etc/vblade.conf.d/$1.conf"        if [ -f "$CONFIG" ] ; then            do_action "$CONFIG"        fi        shift    doneelse    for CONFIG in /etc/vblade.conf.d/*.conf ; do        if [ -f "$CONFIG" ] ; then            do_action "$CONFIG"        fi    donefiexit $EXIT
 |