| 
 | 1 | +#!/bin/sh  | 
 | 2 | +### BEGIN INIT INFO  | 
 | 3 | +# Provides:          fluentdo-agent  | 
 | 4 | +# Required-Start:    $local_fs $network $named $time $syslog  | 
 | 5 | +# Required-Stop:     $local_fs $network $named $time $syslog  | 
 | 6 | +# Default-Start:     2 3 4 5  | 
 | 7 | +# Default-Stop:      0 1 6  | 
 | 8 | +# Description:       Init script for FluentDo Agent.  | 
 | 9 | +### END INIT INFO  | 
 | 10 | + | 
 | 11 | +# Adapted from https://github.com/wyhasany/sysvinit-service-generator  | 
 | 12 | +# MIT licence: https://github.com/wyhasany/sysvinit-service-generator/blob/master/LICENSE  | 
 | 13 | + | 
 | 14 | +NAME=fluentdo-agent  | 
 | 15 | +SCRIPT="/opt/fluentdo-agent/bin/fluentdo-agent -c /etc/fluentdo-agent/fluent-bit.conf"  | 
 | 16 | +RUNAS=root  | 
 | 17 | + | 
 | 18 | +PIDFILE=/var/run/$NAME.pid  | 
 | 19 | +LOGFILE=/var/log/$NAME.log  | 
 | 20 | + | 
 | 21 | +start() {  | 
 | 22 | +  if [ -f $PIDFILE ] && [ -s $PIDFILE ] && kill -0 "$(cat "$PIDFILE")"; then  | 
 | 23 | +    echo 'Service already running' >&2  | 
 | 24 | +    return 1  | 
 | 25 | +  fi  | 
 | 26 | +  echo 'Starting service...' >&2  | 
 | 27 | +  CMD="$SCRIPT &> \"$LOGFILE\" & echo \$!"  | 
 | 28 | +  su -c "$CMD" $RUNAS > "$PIDFILE"  | 
 | 29 | + # Try with this command line instead of above if not workable  | 
 | 30 | + # su -s /bin/sh $RUNAS -c "$CMD" > "$PIDFILE"  | 
 | 31 | + | 
 | 32 | +  sleep 2  | 
 | 33 | +  PID=$(cat $PIDFILE)  | 
 | 34 | +    if pgrep -u $RUNAS -f $NAME > /dev/null  | 
 | 35 | +    then  | 
 | 36 | +      echo "$NAME is now running, the PID is $PID"  | 
 | 37 | +    else  | 
 | 38 | +      echo ''  | 
 | 39 | +      echo "Error! Could not start $NAME!"  | 
 | 40 | +    fi  | 
 | 41 | +}  | 
 | 42 | + | 
 | 43 | +stop() {  | 
 | 44 | +    if [ ! -f "$PIDFILE" ] ; then  | 
 | 45 | +        echo 'Service not running' >&2  | 
 | 46 | +        return 1  | 
 | 47 | +    else  | 
 | 48 | +        PID="$(cat "$PIDFILE")"  | 
 | 49 | +        # Here, we're checking if the process command line matches our service's command  | 
 | 50 | +        if ! ps -p "$PID" -o args= | grep -q "^$SCRIPT$"; then  | 
 | 51 | +            echo 'Service not running (or PID mismatch)' >&2  | 
 | 52 | +            echo 'Removing PID file...' >&2  | 
 | 53 | +            rm -f "$PIDFILE"  | 
 | 54 | +            return 1  | 
 | 55 | +        else  | 
 | 56 | +            echo "Stopping service, the PID is $PID..." >&2  | 
 | 57 | +            kill -15 "$(cat "$PIDFILE")" && rm -f "$PIDFILE"  | 
 | 58 | +            echo 'Service stopped' >&2  | 
 | 59 | +        fi  | 
 | 60 | +    fi  | 
 | 61 | +}  | 
 | 62 | + | 
 | 63 | +status() {  | 
 | 64 | +    printf "" "Checking $NAME..."  | 
 | 65 | +    if [ ! -f "$PIDFILE" ]; then  | 
 | 66 | +        printf "%s\n" "Service not running"  | 
 | 67 | +    else  | 
 | 68 | +        PID=$(cat $PIDFILE)  | 
 | 69 | +        if ps -p "$PID" -o args= | grep -q "^$SCRIPT$"; then  | 
 | 70 | +            echo "Running, the PID is $PID"  | 
 | 71 | +        else  | 
 | 72 | +            printf "%s\n" "The process appears to be dead but pidfile still exists"  | 
 | 73 | +        fi  | 
 | 74 | +    fi  | 
 | 75 | +}  | 
 | 76 | + | 
 | 77 | +case "$1" in  | 
 | 78 | +  start)  | 
 | 79 | +    start  | 
 | 80 | +    ;;  | 
 | 81 | +  stop)  | 
 | 82 | +    stop  | 
 | 83 | +    ;;  | 
 | 84 | +  status)  | 
 | 85 | +    status  | 
 | 86 | +    ;;  | 
 | 87 | +  restart)  | 
 | 88 | +    stop  | 
 | 89 | +    start  | 
 | 90 | +    ;;  | 
 | 91 | +  *)  | 
 | 92 | +    echo "Usage: $0 {start|stop|status|restart}"  | 
 | 93 | +esac  | 
0 commit comments