User talk:OtakuMegane

From OpenSimulator

Revision as of 22:36, 24 November 2015 by OtakuMegane (Talk | contribs)

Jump to: navigation, search

Modified oswatchdog

This is a modified version of BlueWall's oswatchdog. I had trouble getting the original to run and it was not well designed for multiple instances (I run quite a few). This allows you to easily add as many instances to be monitored as you wish.

NOTE: This assumes you have separate script(s) to launch each instance and apply any relevant settings, whereas BlueWall's original executed the commands directly from the watchdog script.

Opensim Status

This is the script I use to monitor my Opensim instances and restart them as needed. Originally based on BlueWall's oswatchdog script.

#!/bin/sh
#
# THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#
# Base opensim installation
BASE="/home/opensim"
 
# Log
LOG="$BASE/status-log.log"
 
# Hostname
HOSTNAME="104.218.17.84"
 
# If you run this script as root but opensim is run under another user, set this to TRUE.
# Otherwise ignore it 
RUN_AS_OTHER_USER='FALSE'
 
#if the file exist, opensim wont be restarted
# Sacha Magne
LOCKFILE="/tmp/norun.opensim"
 
if [ -f "$LOCKFILE" ]
then
        echo $LOCKFILE "found. no restart"
        exit
fi
 
terminate_dead()
{
        kill -KILL $1
        sleep 3
}
 
status_check()
{
        running_pid=`ps ax|grep $2|grep -v grep|tr -s ' '|sed 's/^ //'|cut -f1 -d' '`
        screen_is_dead=`screen -list|grep $2|tr -s ' '|grep '(Dead ???)'`
 
        if [ -n "$screen_is_dead" ]
        then
                screen -wipe
        fi
 
        if ! curl "http://$HOSTNAME:$1/simstatus/" > /dev/null 2>&1
        then
                if [ -n "$running_pid" ]
                then
                        terminate_dead $running_pid
                fi
        fi
 
        if [ -z "$running_pid" ]
        then
                #...We Make A Log Entry And Start A New One
                # The Log Entry
                TIME="Simulator $2 Down, Restarting: `/bin/date +"%A, %B %d - %r"`"
                echo $TIME >>$LOG
 
                if [ $RUN_AS_OTHER_USER = 'TRUE' ]
                then
                        su -l $4 -c "$3"
                else
                        $3
                fi
 
                echo "$2 was down or unresponsive. Restarted."
        else
                echo "$2 is up and responds with OK status."
        fi
}
 
# Add a new line for each instance you want to monitor.
# All you need to do is replace each of the three settings with the correct
# values for the instance.
#
# status_check "<listener port>" "<screen name>" "<launch script>" "<user>"
#
# <listener port> - The port the instance listens to. Is set in OpenSim.ini; default is 9000
# <screen name> - The name of the screen running the instance
# <launch script> - The filename of the script that launches the instance
# <user> - User that opensim runs under. Unless you set RUN_AS_OTHER_USER='TRUE' this will be ignored
#
# Example: status_check "9000" "OpensimOne" "/home/opensim/opensim-one.sh" "opensim"
 
status_check "<listener port>" "<screen name>" "<launch script>" "<user>"
Personal tools
General
About This Wiki