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

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