Bosun बोसुन init.d स्क्रिप्ट


उदाहरण

यहाँ Bosun के लिए एक init.d स्क्रिप्ट है जिसमें पर्यावरणीय चर सेट करना शामिल है जिसका उपयोग कच्चे कॉन्फ़िगरेशन से रहस्यों को छिपाने के लिए किया जा सकता है। प्रोग्राम को डेमन के रूप में चलाने के लिए यह http://software.clapper.org/daemonize/ का उपयोग करता है।

#!/bin/sh
#
# /etc/rc.d/init.d/bosun
# bosun
#
# chkconfig: - 98 02
# description: bosun

### BEGIN INIT INFO
# Provides:          bosun
# Required-Start:    networking
# Required-Stop:     networking
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Runs teh bosun
# Description:       bosun

### END INIT INFO
# Source function library.
. /etc/rc.d/init.d/functions

base_dir="/opt/bosun"
exec="/opt/bosun/bosun"
prog="bosun"
config="${base_dir}/config/prod.conf"

[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

lockfile=/var/lock/subsys/$prog
pidfile=/var/run/bosun.pid
logfile=/var/log/$prog.log

#These "secrets" can be used in the prod.conf using syntax like ${env.CHAT} or ${env.API_KEY}
export CHAT=https://chat.company.com/rooms/123?key=123456789012345678901234567890
export API_KEY=123456789012345678901234567890

check() {
    $exec -t -c $config
    if [ $? -ne 0 ]; then
       echo "Errors found in configuration file, check it with '$exec -t'."
       exit 1
    fi
}

start() {
    [ -x $exec ] || exit 5
    [ -f $config ] || exit 6
    check
    echo -n $"Starting $prog: "
    # if not running, start it up here, usually something like "daemon $exec"
    ulimit -n 65536
    daemon daemonize -a -c $base_dir -e $logfile -o $logfile  -p $pidfile -l $lockfile $exec -c $config $OPTS
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    # stop it here, often "killproc $prog"
    killproc -p $pidfile -d 5m
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    check
    stop
    start
}

reload() {
    restart
}

force_reload() {
    restart
}

rh_status() {
    # run checks to determine if the service is running or use generic status
    status $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}


case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
        restart
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
        exit 2
esac