1#!/bin/bash 2# 3# rundeckd Startup script for the RunDeck Launcher install 4# paramaters: 5# - env vars: [RDECK_BASE, RDECK_PORT, RDECK_LAUNCHER] 6# - standard RDECK_PORT values: [http: 4440, https: 4443] 7 8# RDECK_BASE must be set and exist 9[ -z "$RDECK_BASE" -o ! -d "$RDECK_BASE" ] && { 10 echo "RDECK_BASE not set or does not exist" ; 11 exit 1 ; 12} 13 14# Source installation profile 15. $RDECK_BASE/etc/profile 16 17# Get the Launcher Jar path 18[ -z "$RDECK_LAUNCHER" ] && { 19 # Defaults to location of first startup 20 RDECK_LAUNCHER='${rundeck.launcher.jar.location}'; #set by install 21} 22[ -r "$RDECK_LAUNCHER" ] || { 23 echo "RDECK_LAUNCHER not found: $RDECK_LAUNCHER" 24 exit 1; 25} 26 27echo_success() { 28 echo "[OK]" 29 return 0 30} 31 32echo_failure() { 33 echo "[FAILED]" 34 return 1 35} 36 37# lookup the server port from the tools config file 38RDECK_PORT=`awk '/framework.server.port/ {print $3}' $RDECK_BASE/etc/framework.properties` 39 40# set the ssl opts if https is configured 41SSL_OPTS= 42proto=$(awk '/framework.server.url = / {split($3, a, ":"); print a[1]}' $RDECK_BASE/etc/framework.properties) 43[ "${proto:-http}" == "https" ] && { 44 SSL_OPTS="-Drundeck.ssl.config=$RDECK_BASE/server/config/ssl.properties -Dserver.https.port=${RDECK_PORT:=4443}" 45} 46 47prog="rundeckd" 48LOG4J_CONFIG="${RDECK_BASE}/server/config/log4j2.properties" 49logging="-Dlogging.config=file:${LOG4J_CONFIG} -Dlog4j.configurationFile=${LOG4J_CONFIG}" 50rundeckd="${JAVA_HOME}/bin/java ${logging} ${RDECK_JVM} -Dserver.http.port=${RDECK_PORT:=4440} $SSL_OPTS -jar ${RDECK_LAUNCHER}" 51RETVAL=0 52PID_FILE=$RDECK_BASE/var/run/${prog}.pid 53LOK_FILE=$RDECK_BASE/var/lock/subsys/$prog 54servicelog=$RDECK_BASE/var/log/service.log 55 56[ -w $RDECK_BASE/var ] || { 57 echo "RDECK_BASE dir not writable: $RDECK_BASE" 58 exit 1 ; 59} 60 61mkdir -p $RDECK_BASE/var/run 62mkdir -p $RDECK_BASE/var/log 63mkdir -p $RDECK_BASE/var/lock/subsys 64 65start() { 66 RETVAL=0 67 printf "%s" "Starting $prog: " 68 [ -f $LOK_FILE -a -f $PID_FILE ] && { 69 echo_success; #already running 70 return $RETVAL 71 } 72 nohup $rundeckd >>$servicelog 2>&1 & 73 RETVAL=$? 74 PID=$! 75 echo $PID > $PID_FILE 76 if [ $RETVAL -eq 0 ]; then 77 touch $LOK_FILE 78 echo_success 79 else 80 echo_failure 81 fi 82 return $RETVAL 83} 84 85stop() { 86 RETVAL=0 87 printf "%s" "Stopping $prog: " 88 [ ! -f $PID_FILE ] && { 89 echo_success; #already stopped 90 return $RETVAL 91 } 92 PID=`cat $PID_FILE` 93 RETVAL=$? 94 [ -z "$PID" ] && { 95 echo_failure; #empty pid value" 96 return $RETVAL; 97 } 98 ps -p "$PID" >/dev/null 2>&1 99 if [ $? -eq 0 ]; then 100 kill $PID >/dev/null 2>&1 101 RETVAL=$? 102 [ $RETVAL -eq 0 ] || { 103 echo_failure; # could not kill process 104 return $RETVAL 105 } 106 fi 107 rm -f $PID_FILE; # Remove control files 108 rm -f $LOK_FILE 109 echo_success 110 return $RETVAL 111} 112 113status() { 114 RETVAL=0 115 printf "%s" "Status $prog: " 116 test -f "$PID_FILE" 117 RETVAL=$? 118 [ $RETVAL -eq 0 ] || { 119 echo "$prog is stopped"; 120 return 3; 121 } 122 PID=`cat $PID_FILE` 123 ps -p "$PID" >/dev/null 124 RETVAL=$? 125 [ $RETVAL -eq 0 ] && { 126 echo "$prog is running (pid=$PID, port=$RDECK_PORT)" 127 } || { 128 echo "$prog dead but pid file exists" 129 } 130 return $RETVAL 131} 132 133case "$1" in 134 start) 135 start 136 ;; 137 stop) 138 stop 139 ;; 140 restart) 141 stop 142 start 143 ;; 144 condrestart) 145 if [ -f $LOK_FILE ]; then 146 stop 147 start 148 fi 149 ;; 150 status) 151 status $rundeckd 152 RETVAL=$? 153 ;; 154 *) 155 echo $"Usage: $0 {start|stop|restart|condrestart|status}" 156 RETVAL=1 157esac 158 159exit $RETVAL 160