Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #
- # chkconfig: 345 85 15
- # description: Startup script for VirgoRT
- # author: Dawid Mocek
- ### BEGIN INIT INFO
- # Provides: virgo
- # Required-Start: $network $local_fs
- # Required-Stop:
- # Should-Start:
- # Should-Stop:
- # Default-Start: 3 4 5
- # Default-Stop: 0 1 2 6
- # Short-Description: Startup script for virgo
- # Description: Starts and stops virgo service
- ### END INIT INFO
- # Source function library.
- . /etc/init.d/functions
- # Uzytkownik pod ktorym proces serwara virgo bedzie dzialac
- VIRGO_USER="virgo"
- # Lokalizacja virgo (w tym katalogu musza byc katalogi: bin, lib, configuration itp)
- VIRGO_HOME="/opt/virgo_aw1"
- # Argumenty przekazane do startup.sh Virgo - jesli nie ma byc zadnych to ustawic pustego stringa:
- # VIRGO_OPTS=""
- VIRGO_OPTS="-clean"
- # Log virgo - znalezc jest pozycje mozna w konf. virgo w $VIRGO_HOME/configuration/serviceability.xml
- # pod linia <appender name="LOG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
- # Na podstawie niego ten skrypt wie ze virgo wystartowal lub sie zatrzymal
- VIRGO_LOG_FILE="$VIRGO_HOME/serviceability/logs/log.log"
- # Niech będzie unikatowe zeby bylo wiadomo o jakei virgo chodzi - zmienna jest uzywana tylko do informacyjnych komend w echo
- SERVICE_NAME="virgo_aw1"
- # Time to wait for startup and shutdown
- STARTUP_WAIT_TIME=200
- # Poniewaz shutdown.sh nie działa w wiekszosci instalcji a zabijamy proces od tak ta zmienna jest nie wykorzystywana:
- SHUTDOWN_WAIT_TIME=120
- # If you need stderr and stdout from virgo
- OUT_FILE="/dev/null"
- # Na podstawie tego sprawdzamy czy process istnieje lub zabijamy process jesli shutdown nie zadziala
- # Nowsze werje virgo:
- # PROCESS_STRING="org.eclipse.virgo.kernel.config=$VIRGO_HOME/configuration"
- # Starsze wersje virgo:
- PROCESS_STRING="org.eclipse.virgo.kernel.config=$VIRGO_HOME/config"
- # Nie tykać:
- RETVAL=$?
- start() {
- if [ ! -d "$VIRGO_HOME/config" ]; then
- echo $"FAILED: $VIRGO_HOME/config does not exists. Newer version of virgo stores config. files in \"configuration\" directory. \
- Change \$PROCESS_STRING to: org.eclipse.virgo.kernel.config=$VIRGO_HOME/configuration"
- exit 1
- fi
- OLDPID=`/usr/bin/pgrep -f $PROCESS_STRING`
- if [ ! -z "$OLDPID" ]; then
- echo "$SERVICE_NAME is already running (pid $OLDPID) !"
- exit 1
- fi
- if [ -f "$VIRGO_HOME/bin/startup.sh" ]; then
- echo -n $"Starting $SERVICE_NAME... "
- /bin/su --login $VIRGO_USER --command "$VIRGO_HOME/bin/startup.sh $VIRGO_OPTS > $OUT_FILE 2>&1 &"
- # Get return value from su
- RETVAL=$?
- if [ $RETVAL -eq 0 ]; then
- # Sleeping 'cos argument '-clean' passed to startup.sh deletes log.log file so wait until virgo touch it again
- sleep 10
- # Check if log exists and is readable
- if [ -r "$VIRGO_LOG_FILE" ]; then
- # Start scaning log file
- wait_for "UR0001I User region ready." $STARTUP_WAIT_TIME
- else
- echo -n $"$SERVICE_NAME probably started but $VIRGO_LOG_FILE is not readable."
- fi
- else
- echo -n $"FAILED: $RETVAL. Please check $VIRGO_LOG_FILE for more information."
- fi
- else
- echo -n $"$VIRGO_HOME/bin/startup.sh does not exists !"
- exit 1
- fi
- }
- # Poniewaz shutdown nie działa w wiekszosci instalcji - zabijamy proces od tak
- stop() {
- # if [ -f "$VIRGO_HOME/bin/shutdown.sh" ]; then
- echo -n $"Stopping Virgo..."
- # /bin/su --login $VIRGO_USER --command "$VIRGO_HOME/bin/shutdown.sh > $OUT_FILE 2>&1 &"
- # RETVAL=$?
- # if [ $RETVAL -eq 0 ] ; then
- # wait_for "Stopped Tomcat." $SHUTDOWN_WAIT_TIME
- # else
- # echo -n $"FAILED: $RETVAL. Please check $VIRGO_LOG_FILE for more information."
- # echo -n $" Trying to kill..."
- # echo "$PROCESS_STRING"
- OLDPID=`/usr/bin/pgrep -f $PROCESS_STRING`
- if [ "$OLDPID" != "" ]; then
- echo -n $"(pid $OLDPID) "
- /bin/kill -TERM $OLDPID
- RETVAL=$?
- echo $"OK"
- else
- /bin/echo $"$SERVICE_NAME is not running"
- fi
- # fi
- # else
- # echo "$VIRGO_HOME/bin/shutdwon.sh does not exists !"
- # exit
- # fi
- }
- wait_for() {
- flag="0"
- lines=$(wc -l "$VIRGO_LOG_FILE" | awk '{ print $1 }')
- lines_tmp="0"
- res=$(tail --lines=+$lines "$VIRGO_LOG_FILE" | fgrep -c "$1")
- count=$2
- while [[ ! $res -gt 0 ]] && [[ $count -gt 0 ]]
- do
- if [ "$flag" -eq "0" ] && [ "$lines" -eq "0" ]; then
- # keep track on number of lines in file. If file is being rotated by virgo logger
- # we need to reset lines variable
- lines_tmp=$(wc -l "$VIRGO_LOG_FILE" | awk '{ print $1 }')
- # lines_tmp=$((lines_tmp + 1))
- if [ $lines_tmp -lt $lines ]; then
- # reset
- lines = 0
- flag = "1"
- fi
- fi
- sleep 1
- count=$(($count - 1))
- res=$(tail --lines=+$lines "$VIRGO_LOG_FILE" | fgrep -c "$1")
- done
- res=$(tail --lines=+$lines "$VIRGO_LOG_FILE" | fgrep -c "$1")
- if [ ! $res -gt 0 ]; then
- echo $"FAILED. Took too long time to start or started EXACTLY on time. Please check $VIRGO_LOG_FILE for more information."
- else
- echo $"OK"
- fi
- }
- case "$1" in
- start)
- start
- ;;
- stop)
- stop
- ;;
- clean)
- OLDPID=`/usr/bin/pgrep -f $PROCESS_STRING`
- if [ "$OLDPID" != "" ] && [ -f "$VIRGO_HOME/bin/startup.sh" ]; then
- /bin/su --login $VIRGO_USER --command "$VIRGO_HOME/bin/startup.sh -clean -noStart"
- else
- /bin/echo $"FAILED. $SERVICE_NAME is running (pid: $OLDPID). Cannot clean"
- fi
- RETVAL=$?
- ;;
- status)
- OLDPID=`/usr/bin/pgrep -f $PROCESS_STRING`
- if [ "$OLDPID" != "" ]; then
- /bin/echo $"$SERVICE_NAME is running (pid: $OLDPID)"
- else
- /bin/echo $"$SERVICE_NAME is stopped"
- fi
- RETVAL=$?
- ;;
- *)
- echo "Usage: $0 {start|stop|status|clean}"
- exit 1
- ;;
- esac
- exit $RETVAL
Advertisement
Add Comment
Please, Sign In to add comment