#!/bin/bash ### BEGIN INIT INFO # Provides: cloud agent # Required-Start: $network # Required-Stop: $network # Default-Start: 3 4 5 # Default-Stop: 0 1 2 6 # X-Interactive: true # Short-Description: Start/stop apache2 web server ### END INIT INFO # WARNING: if this script is changed, then all other initscripts MUST BE changed to match it as well . /lib/lsb/init-functions . /etc/default/rcS whatami=cloud-agent # set environment variables SHORTNAME="$whatami" PIDFILE=@PIDDIR@/"$whatami".pid LOCKFILE=@LOCKDIR@/"$SHORTNAME" LOGFILE=@AGENTLOG@ PROGNAME="Cloud Agent" unset OPTIONS [ -r @SYSCONFDIR@/default/"$SHORTNAME" ] && source @SYSCONFDIR@/default/"$SHORTNAME" DAEMONIZE=@BINDIR@/@PACKAGE@-daemonize PROG=@LIBEXECDIR@/agent-runner wait_for_network() { i=1 while [ $i -lt 10 ] do if ip addr show cloudbr0 |grep -w inet > /dev/null 2>&1; then break else sleep 1 let i=$i+1 continue fi done } start() { log_daemon_msg $"Starting $PROGNAME" "$SHORTNAME" if [ -s "$PIDFILE" ] && kill -0 $(cat "$PIDFILE") >/dev/null 2>&1; then log_progress_msg "apparently already running" log_end_msg 0 exit 0 fi if hostname --fqdn >/dev/null 2>&1 ; then true else log_failure_msg "The host name does not resolve properly to an IP address. Cannot start $PROGNAME" log_end_msg 1 exit 1 fi #FIXME: wait for network wait_for_network if start-stop-daemon --start --quiet \ --pidfile "$PIDFILE" \ --exec "$DAEMONIZE" -- -n "$SHORTNAME" -p "$PIDFILE" -l "$LOGFILE" "$PROG" $OPTIONS RETVAL=$? then rc=0 sleep 1 if ! kill -0 $(cat "$PIDFILE") >/dev/null 2>&1; then log_failure_msg "$PROG failed to start" rc=1 fi else rc=1 fi if [ $rc -eq 0 ]; then log_end_msg 0 else log_end_msg 1 rm -f "$PIDFILE" fi } stop() { SHUTDOWN_WAIT="30" count="0" echo -n $"Stopping $PROGNAME" "$SHORTNAME" start-stop-daemon --stop --quiet --oknodo --pidfile "$PIDFILE" until [ "$count" -gt "$SHUTDOWN_WAIT" ] do agentPid=`ps aux|grep [j]ava` if [ "$?" -gt "0" ];then break fi sleep 1 let count="${count}+1" done agentPid=`ps aux|grep [j]ava` if [ "$?" -eq "0" ]; then agentPid=`ps aux|grep [j]ava|awk '{print $2}'` if [ "$agentPid" != "" ]; then kill -9 $agentPid fi fi log_end_msg $? rm -f "$PIDFILE" } # See how we were called. case "$1" in start) start ;; stop) stop ;; status) status_of_proc -p "$PIDFILE" "$PROG" "$SHORTNAME" RETVAL=$? ;; restart) stop sleep 3 start ;; *) echo $"Usage: $whatami {start|stop|restart|status|help}" RETVAL=3 esac exit $RETVAL