m4ly

Virgo

Dec 21st, 2014
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 5.94 KB | None | 0 0
  1. #!/bin/bash
  2. #
  3. # chkconfig:   345 85 15
  4. # description: Startup script for VirgoRT
  5. # author: Dawid Mocek
  6.  
  7. ### BEGIN INIT INFO
  8. # Provides: virgo
  9. # Required-Start: $network $local_fs
  10. # Required-Stop:
  11. # Should-Start:
  12. # Should-Stop:
  13. # Default-Start: 3 4 5
  14. # Default-Stop: 0 1 2 6
  15. # Short-Description:  Startup script for virgo
  16. # Description: Starts and stops virgo service
  17. ### END INIT INFO
  18.  
  19.  
  20. # Source function library.
  21. . /etc/init.d/functions
  22.  
  23.  
  24. # Uzytkownik pod ktorym proces serwara virgo bedzie dzialac
  25. VIRGO_USER="virgo"
  26.  
  27. # Lokalizacja virgo (w tym katalogu musza byc katalogi: bin, lib, configuration itp)
  28. VIRGO_HOME="/opt/virgo_aw1"
  29.  
  30. # Argumenty przekazane do startup.sh Virgo - jesli nie ma byc zadnych to ustawic pustego stringa:
  31. # VIRGO_OPTS=""
  32. VIRGO_OPTS="-clean"
  33.  
  34. # Log virgo - znalezc jest pozycje mozna w konf. virgo w $VIRGO_HOME/configuration/serviceability.xml
  35. # pod linia <appender name="LOG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  36. # Na podstawie niego ten skrypt wie ze virgo wystartowal lub sie zatrzymal
  37. VIRGO_LOG_FILE="$VIRGO_HOME/serviceability/logs/log.log"
  38.  
  39. # Niech będzie unikatowe zeby bylo wiadomo o jakei virgo chodzi - zmienna jest uzywana tylko do informacyjnych komend w echo
  40. SERVICE_NAME="virgo_aw1"
  41.  
  42. # Time to wait for startup and shutdown
  43. STARTUP_WAIT_TIME=200
  44.  
  45. # Poniewaz shutdown.sh nie działa w wiekszosci instalcji a zabijamy proces od tak ta zmienna jest nie wykorzystywana:
  46. SHUTDOWN_WAIT_TIME=120
  47.  
  48. # If you need stderr and stdout from virgo
  49. OUT_FILE="/dev/null"
  50.  
  51.  
  52. # Na podstawie tego sprawdzamy czy process istnieje lub zabijamy process jesli shutdown nie zadziala
  53. # Nowsze werje virgo:
  54. # PROCESS_STRING="org.eclipse.virgo.kernel.config=$VIRGO_HOME/configuration"
  55. # Starsze wersje virgo:
  56. PROCESS_STRING="org.eclipse.virgo.kernel.config=$VIRGO_HOME/config"
  57.  
  58. # Nie tykać:
  59. RETVAL=$?
  60.  
  61. start() {
  62.    
  63.     if [ ! -d "$VIRGO_HOME/config" ]; then
  64.         echo  $"FAILED: $VIRGO_HOME/config does not exists. Newer version of virgo stores config. files in \"configuration\" directory. \
  65.         Change \$PROCESS_STRING to: org.eclipse.virgo.kernel.config=$VIRGO_HOME/configuration"
  66.     exit 1
  67.     fi
  68.    
  69.    
  70.     OLDPID=`/usr/bin/pgrep -f $PROCESS_STRING`
  71.     if [ ! -z "$OLDPID" ]; then
  72.     echo "$SERVICE_NAME is already running (pid $OLDPID) !"
  73.     exit 1
  74.     fi
  75.    
  76.     if [ -f "$VIRGO_HOME/bin/startup.sh" ]; then
  77.  
  78.     echo -n $"Starting $SERVICE_NAME... "
  79.         /bin/su --login $VIRGO_USER --command "$VIRGO_HOME/bin/startup.sh $VIRGO_OPTS > $OUT_FILE 2>&1 &"
  80.        
  81.         # Get return value from su
  82.         RETVAL=$?
  83.        
  84.         if [ $RETVAL -eq 0 ]; then
  85.        
  86.             # Sleeping 'cos argument  '-clean' passed to startup.sh deletes log.log file so wait until virgo touch it again
  87.             sleep 10
  88.            
  89.         # Check if log exists and is readable
  90.             if [ -r "$VIRGO_LOG_FILE" ]; then
  91.            
  92.             # Start scaning log file
  93.         wait_for "UR0001I User region ready." $STARTUP_WAIT_TIME
  94.         else
  95.         echo -n  $"$SERVICE_NAME probably started but $VIRGO_LOG_FILE is not readable."
  96.         fi
  97.     else
  98.         echo -n  $"FAILED: $RETVAL. Please check $VIRGO_LOG_FILE for more information."
  99.         fi
  100.     else
  101.     echo -n $"$VIRGO_HOME/bin/startup.sh does not exists !"
  102.     exit 1
  103.     fi
  104. }
  105.  
  106. # Poniewaz shutdown nie działa w wiekszosci instalcji - zabijamy proces od tak
  107. stop() {
  108.  
  109. #    if [ -f "$VIRGO_HOME/bin/shutdown.sh" ];  then
  110.         echo  -n  $"Stopping Virgo..."
  111. #        /bin/su --login $VIRGO_USER --command "$VIRGO_HOME/bin/shutdown.sh > $OUT_FILE 2>&1 &"
  112. #        RETVAL=$?
  113. #        if [ $RETVAL -eq 0 ] ; then
  114. #       wait_for "Stopped Tomcat." $SHUTDOWN_WAIT_TIME
  115. #   else
  116. #       echo -n $"FAILED: $RETVAL. Please check $VIRGO_LOG_FILE for more information."
  117. #       echo -n $" Trying to kill..."
  118.  
  119.          # echo "$PROCESS_STRING"
  120.          OLDPID=`/usr/bin/pgrep -f $PROCESS_STRING`
  121.              if [ "$OLDPID" != "" ]; then
  122.         echo -n $"(pid $OLDPID) "
  123.                 /bin/kill -TERM $OLDPID
  124.             RETVAL=$?
  125.             echo $"OK"
  126.         else
  127.             /bin/echo $"$SERVICE_NAME is not running"
  128.             fi
  129. #        fi
  130. #    else
  131. #   echo "$VIRGO_HOME/bin/shutdwon.sh does not exists !"
  132. #   exit
  133. #    fi
  134. }
  135.  
  136. wait_for() {
  137.     flag="0"
  138.     lines=$(wc -l "$VIRGO_LOG_FILE" | awk '{ print $1 }')
  139.     lines_tmp="0"
  140.  
  141.     res=$(tail --lines=+$lines "$VIRGO_LOG_FILE" | fgrep -c "$1")
  142.     count=$2
  143.     while [[ ! $res -gt 0 ]] && [[ $count -gt 0 ]]
  144.     do
  145.  
  146.     if [ "$flag" -eq "0" ] && [ "$lines" -eq "0" ]; then
  147.     # keep track on number of lines in file. If file is being rotated by virgo logger
  148.     # we need to reset lines variable
  149.     lines_tmp=$(wc -l "$VIRGO_LOG_FILE"  | awk '{ print $1 }')
  150. #   lines_tmp=$((lines_tmp + 1))
  151.  
  152.     if [ $lines_tmp -lt $lines ]; then
  153.         # reset
  154.         lines = 0
  155.         flag = "1"
  156.     fi
  157.     fi
  158.  
  159.         sleep 1
  160.         count=$(($count - 1))
  161.         res=$(tail --lines=+$lines "$VIRGO_LOG_FILE" | fgrep -c "$1")
  162.     done
  163.     res=$(tail --lines=+$lines "$VIRGO_LOG_FILE" | fgrep -c "$1")
  164.     if [ ! $res -gt 0 ]; then
  165.         echo $"FAILED.  Took too long time to start or started EXACTLY on time. Please check $VIRGO_LOG_FILE for more information."
  166.     else
  167.         echo $"OK"
  168.     fi
  169. }
  170.  
  171.  
  172. case "$1" in
  173.     start)
  174.     start
  175.     ;;
  176.     stop)
  177.     stop
  178.     ;;
  179.     clean)
  180.     OLDPID=`/usr/bin/pgrep -f $PROCESS_STRING`
  181.         if [ "$OLDPID" != "" ] && [ -f "$VIRGO_HOME/bin/startup.sh" ]; then
  182.             /bin/su --login $VIRGO_USER --command "$VIRGO_HOME/bin/startup.sh -clean -noStart"
  183.         else
  184.         /bin/echo $"FAILED. $SERVICE_NAME is running (pid: $OLDPID). Cannot clean"
  185.     fi
  186.         RETVAL=$?
  187.         ;;
  188.     status)
  189.     OLDPID=`/usr/bin/pgrep -f $PROCESS_STRING`
  190.         if [ "$OLDPID" != "" ]; then
  191.         /bin/echo $"$SERVICE_NAME is running (pid: $OLDPID)"
  192.     else
  193.             /bin/echo $"$SERVICE_NAME is stopped"
  194.         fi
  195.         RETVAL=$?
  196.      ;;
  197.     *)
  198.     echo "Usage: $0 {start|stop|status|clean}"
  199.     exit 1
  200.     ;;
  201. esac
  202.  
  203. exit $RETVAL
Advertisement
Add Comment
Please, Sign In to add comment