github.com/choria-io/go-choria@v0.28.1-0.20240416190746-b3bf9c7d5a45/packager/templates/el/el6/broker.init (about)

     1  #!/bin/bash
     2  #
     3  # Init script for {{cpkg_name}}-broker
     4  #
     5  ### BEGIN INIT INFO
     6  # Provides:          {{cpkg_name}}-broker
     7  # Required-Start:    $remote_fs $syslog
     8  # Required-Stop:     $remote_fs $syslog
     9  # chkconfig:         {{cpkg_broker_start_runlevels}} {{cpkg_broker_start_order}} {{cpkg_broker_start_order}}
    10  # Short-Description: Choria.IO Orchestration System Network Broker
    11  # Description:       NATS based middleware, Federation Broker and Protocol Adapter for Choria.IO
    12  ### END INIT INFO
    13  
    14  # source function library
    15  . /etc/rc.d/init.d/functions
    16  
    17  prog="{{cpkg_name}}-broker"
    18  user="root"
    19  exec="{{cpkg_bindir}}/{{cpkg_name}}"
    20  pidfile="/var/run/${prog}.pid"
    21  lockfile="/var/lock/subsys/${prog}"
    22  logfile="/var/log/${prog}"
    23  conffile="{{cpkg_etcdir}}/broker.conf"
    24  
    25  # set the open file limit to allow over 1024 connections
    26  ulimit -n 51200
    27  
    28  # pull in sysconfig settings
    29  [ -e /etc/sysconfig/${prog} ] && . /etc/sysconfig/${prog}
    30  
    31  args="broker run --config=${conffile} --pid=${pidfile} ${EXTRA_OPTS}"
    32  
    33  start() {
    34      [ -x $exec ] || exit 5
    35      [ -f $conffile ] || exit 6
    36      [ -d $confdir ] || exit 6
    37  
    38      umask 077
    39  
    40      touch $logfile $pidfile
    41  
    42      echo -n $"Starting ${prog}: "
    43  
    44      daemon \
    45        --pidfile=${pidfile} \
    46        " { nohup ${exec} ${args} > ${logfile} 2>&1 & }"
    47  
    48      RETVAL=$?
    49      echo
    50  
    51      [ $RETVAL -eq 0 ] && touch $lockfile
    52  
    53      return $RETVAL
    54  }
    55  
    56  stop() {
    57    echo -n $"Shutting down $prog: "
    58  
    59    if rh_status_q ; then
    60      pid=$(cat "$pidfile")
    61      kill -TERM $pid
    62  
    63      for i in 1 2 3 4 5 ; do
    64        rh_status_q || break
    65        sleep 1
    66      done
    67  
    68      if rh_status_q ; then
    69          echo "Timeout reached. Killing $prog (pid $pid) with SIGKILL."
    70          kill -KILL $pid
    71          echo "$prog killed with SIGKILL."
    72      else
    73        echo "$prog stopped."
    74      fi
    75    fi
    76  }
    77  
    78  restart() {
    79      stop
    80      sleep 1
    81      start
    82  }
    83  
    84  force_reload() {
    85      restart
    86  }
    87  
    88  rh_status() {
    89      status -p "$pidfile" -l $prog $exec
    90  }
    91  
    92  rh_status_q() {
    93      rh_status >/dev/null 2>&1
    94  }
    95  
    96  case "$1" in
    97      start)
    98          rh_status_q && exit 0
    99          $1
   100          ;;
   101      stop)
   102          rh_status_q || exit 0
   103          $1
   104          ;;
   105      restart)
   106          $1
   107          ;;
   108      force-reload)
   109          force_reload
   110          ;;
   111      status)
   112          rh_status
   113          ;;
   114      condrestart|try-restart)
   115          rh_status_q || exit 0
   116          restart
   117          ;;
   118      *)
   119          echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|force-reload}"
   120          exit 2
   121  esac
   122  
   123  exit $?