github.com/mikespook/gleam@v0.0.0-20170807230223-29a9392b522c/utils/init.d_gleam (about)

     1  #!/bin/bash
     2  ### BEGIN INIT INFO
     3  # Provides:          gleam
     4  # Required-Start:    $network $remote_fs $local_fs 
     5  # Required-Stop:     $network $remote_fs $local_fs
     6  # Default-Start:     2 3 4 5
     7  # Default-Stop:      0 1 6
     8  # Short-Description: Stop/start gleam
     9  ### END INIT INFO
    10  
    11  PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    12  NAME=gleam
    13  DESC=gleam
    14  DAEMON=/usr/local/bin/gleam
    15  PID=/run/$NAME.pid
    16  LOG=/var/log/$NAME.log
    17  
    18  test -x $DAEMON
    19  if [ $? -eq 1 ]; then
    20  	echo "Missing binary file: $DAEMON"
    21  	exit 1
    22  fi
    23  
    24  set -e
    25  
    26  . /lib/lsb/init-functions
    27  
    28  start_gleam() {
    29  	if [ -f $PID ]; then
    30  		echo -n "Already started " && return 1
    31  	fi
    32  	$DAEMON -scripts=/usr/local/share/gleam &>> $LOG &
    33  	echo $! > $PID
    34  	return 0
    35  }
    36  
    37  stop_gleam() {
    38  	[ ! -f $PID ] && echo -n "Not running " && return 1
    39  	p=`cat $PID`
    40  	[ -n "$p" ] && kill -INT $p &> /dev/null
    41  	rm $PID
    42  	if [ $? -ne 0 ]; then
    43  		return 1
    44  	fi
    45  	return 0
    46  }
    47  
    48  waitstart() {
    49  	i=0
    50  	while [ ! -f $PID ] ; do
    51  		echo -n .
    52  		sleep 0.2
    53  		if [ $i -gt 50 ]; then
    54  			return 1
    55  		fi
    56  		i=$(($i + 1))
    57  	done
    58  }
    59  
    60  waitstop() {	
    61  	i=0
    62  	while [ -f $PID ] ; do
    63  		echo -n .
    64  		sleep 0.2
    65  		if [ $i -gt 50 ]; then
    66  			return 1
    67  		fi
    68  		i=$(($i + 1))
    69  	done
    70  }
    71  
    72  _start() { 
    73  	if start_gleam; then
    74  		if waitstart; then
    75  			echo "... OK."
    76  		else
    77  			echo "... Waiting too long."
    78  		fi
    79  	else
    80  		echo "... FAILED."
    81  	fi
    82  }
    83  
    84  _stop() {
    85  	if stop_gleam; then
    86  		if waitstop; then
    87  			echo "... OK."
    88  		else
    89  			echo "... Waiting too long."
    90  		fi
    91  	else
    92  		echo "... FAILED."	
    93  	fi
    94  }
    95  
    96  case "$1" in
    97  	start)
    98  		echo -n "Starting $NAME: "
    99  		_start
   100  		;;
   101  	stop)
   102  		echo -n "Stopping $NAME: "
   103  		_stop
   104  		;;
   105  	restart)
   106  		echo "Restarting $NAME"
   107  		echo -n "Stopping: "
   108  		_stop
   109  		echo -n "Starting: "	
   110  		_start
   111  		;;
   112  	*)
   113  		echo "Usage: $NAME {start|stop|restart}" >&2
   114  		exit 1
   115  		;;
   116  esac
   117  
   118  exit 0