<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://opensimulator.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://opensimulator.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Frankenputer</id>
		<title>OpenSimulator - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://opensimulator.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Frankenputer"/>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Special:Contributions/Frankenputer"/>
		<updated>2026-05-11T23:17:51Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.19.9</generator>

	<entry>
		<id>http://opensimulator.org/wiki/Startup_script_linux</id>
		<title>Startup script linux</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Startup_script_linux"/>
				<updated>2012-03-21T05:15:52Z</updated>
		
		<summary type="html">&lt;p&gt;Frankenputer: /* Script */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Simple Standalone Sim Startup Script ==&lt;br /&gt;
&lt;br /&gt;
=== Instructions ===&lt;br /&gt;
&lt;br /&gt;
This script assumes that you will start the sim whenever you are using it. &lt;br /&gt;
&lt;br /&gt;
The sim will run as a job in its own terminal. &lt;br /&gt;
&lt;br /&gt;
To shutdown the sim you enter the SHUTDOWN command at the terminal prompt. &lt;br /&gt;
&lt;br /&gt;
=== Script ===&lt;br /&gt;
&lt;br /&gt;
 #! /bin/sh&lt;br /&gt;
 cd /home/opensim/diva-r11766/bin&lt;br /&gt;
 export MONO_THREADS_PER_CPU=125&lt;br /&gt;
 mono OpenSim.exe&lt;br /&gt;
&lt;br /&gt;
== Grid Mode /etc/init.d script for Linux ==&lt;br /&gt;
&lt;br /&gt;
=== Instructions ===&lt;br /&gt;
&lt;br /&gt;
Tested on Debian 5. CHUIDS user to opensim user. Supports: start, stop, restart, status &lt;br /&gt;
&lt;br /&gt;
To implement: Type: cat &amp;amp;gt; /etc/init.d/opensim Paste in script from this page Press: CTRL+D Type: chmod +x /etc/init.d/opensim Script should now be located on server and be executable. &lt;br /&gt;
&lt;br /&gt;
Type: update-rc.d opensim defaults Script should now be in your startup. &lt;br /&gt;
&lt;br /&gt;
Modify header in script to adapt it to your installation folder and user. &lt;br /&gt;
&lt;br /&gt;
NOTE: stop-command currently doesn't work properly (it doesn't do a soft shutdown). It will kill OpenSimulator first with kill pid, then kill -9 pid. So make sure you have saved your data.&amp;amp;nbsp;:) &lt;br /&gt;
&lt;br /&gt;
=== Script ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#! /bin/sh&lt;br /&gt;
 ### BEGIN INIT INFO&lt;br /&gt;
 # Provides:          OpenSimulator&lt;br /&gt;
 # Required-Start:    $local_fs $network &lt;br /&gt;
 # Required-Stop:     $local_fs&lt;br /&gt;
 # Default-Start:     2 3 4 5&lt;br /&gt;
 # Default-Stop:      0 1 6&lt;br /&gt;
 # Short-Description: Tedds OpenSimulator init.d-script&lt;br /&gt;
 ### END INIT INFO&lt;br /&gt;
 &lt;br /&gt;
 # Put script in /etc/init.d/&lt;br /&gt;
 # then execute: update-rc.d opensim defaults&lt;br /&gt;
 &lt;br /&gt;
 set -e&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
 # Directories&lt;br /&gt;
 #&lt;br /&gt;
 # Location of OpenSimulator installation&lt;br /&gt;
 DIR=/home/opensim/OpenSim/bin/&lt;br /&gt;
 # Different PID dir?&lt;br /&gt;
 PIDDIR=$DIR&lt;br /&gt;
 &lt;br /&gt;
 USER=opensim&lt;br /&gt;
 SERVICES=&amp;quot;Robust.exe OpenSim.exe&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
 # Kill values (in seconds)&lt;br /&gt;
 #&lt;br /&gt;
 # How long between each service being started&lt;br /&gt;
 DELAY_STARTUP=10&lt;br /&gt;
 # How long between each service is sent shutdown command&lt;br /&gt;
 DELAY_KILL=10&lt;br /&gt;
 # After shutdown has been sent to all we do another loop with &amp;quot;kill&amp;quot;, then &amp;quot;kill -9&amp;quot;. How long between &amp;quot;kill&amp;quot; and &amp;quot;kill -9&amp;quot;.&lt;br /&gt;
 DELAY_FORCEKILL=10&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
 # Info on service handled by this script&lt;br /&gt;
 &lt;br /&gt;
 # Name of service&lt;br /&gt;
 NAME=opensim&lt;br /&gt;
 # Description of service&lt;br /&gt;
 DESC=&amp;quot;OpenSimulator Server&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Binaries&lt;br /&gt;
 SCREEN=/usr/bin/screen&lt;br /&gt;
 MONO=/usr/bin/mono&lt;br /&gt;
 &lt;br /&gt;
 ###########################&lt;br /&gt;
 ##### START OF SCRIPT #####&lt;br /&gt;
 ###########################&lt;br /&gt;
 &lt;br /&gt;
 export PATH=&amp;quot;${PATH:+$PATH:}/usr/sbin:/sbin&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 # Load LSB log functions&lt;br /&gt;
 _lsbFile=&amp;quot;&amp;quot;&lt;br /&gt;
 if [ -e /etc/debian_version ]; then&lt;br /&gt;
     _lsbFile=&amp;quot;/lib/lsb/init-functions&amp;quot;&lt;br /&gt;
     if [ -f $_lsbFile ]; then&lt;br /&gt;
         . $_lsbFile&lt;br /&gt;
     else&lt;br /&gt;
         echo &amp;quot;This script requires LSB init-functions file which does not exist: $_lsbFile&amp;quot;&lt;br /&gt;
         exit 1&lt;br /&gt;
     fi&lt;br /&gt;
 else&lt;br /&gt;
 # [ -e /etc/init.d/functions ] ; then&lt;br /&gt;
     _lsbFile=&amp;quot;/etc/init.d/functions&amp;quot;&lt;br /&gt;
     if [ -e $_lsbFile ]; then&lt;br /&gt;
         . $_lsbFile&lt;br /&gt;
     else&lt;br /&gt;
         echo &amp;quot;This script requires LSB init-functions file which does not exist: $_lsbFile&amp;quot;&lt;br /&gt;
         exit 1&lt;br /&gt;
     fi&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 # Lets use fancy output&lt;br /&gt;
 log_use_fancy_output&lt;br /&gt;
 &lt;br /&gt;
 # Check that target directory exists&lt;br /&gt;
 if test ! -d &amp;quot;$DIR&amp;quot;; then&lt;br /&gt;
     log_failure_msg &amp;quot;$NAME&amp;quot; &amp;quot;Target directory \&amp;quot;$DIR\&amp;quot; does not exist. Can not continue.&amp;quot;&lt;br /&gt;
     exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 # Create a reverse order for shutdown&lt;br /&gt;
 SERVICES_REVERSE=&amp;quot;&amp;quot;&lt;br /&gt;
 reverse() { SERVICES_REVERSE=&amp;quot;$9 $8 $7 $6 $5 $4 $3 $2 $1&amp;quot;; }&lt;br /&gt;
 reverse $SERVICES&lt;br /&gt;
 &lt;br /&gt;
 # Check if a service is running&lt;br /&gt;
 isrunning() { &lt;br /&gt;
     ISRUNNING=&amp;quot;0&amp;quot;&lt;br /&gt;
     # Do we have PID-file?&lt;br /&gt;
     if [ -f &amp;quot;$PIDDIR/$1.pid&amp;quot; ]; then&lt;br /&gt;
         # Check if proc is running&lt;br /&gt;
         pid=`cat &amp;quot;$PIDDIR/$1.pid&amp;quot; 2&amp;gt; /dev/null`&lt;br /&gt;
         if [ &amp;quot;$pid&amp;quot; != &amp;quot;&amp;quot; ]; then&lt;br /&gt;
             if [ -d /proc/$pid ]; then&lt;br /&gt;
                 # Process is running&lt;br /&gt;
                 ISRUNNING=&amp;quot;1&amp;quot;&lt;br /&gt;
             fi&lt;br /&gt;
         fi&lt;br /&gt;
     fi&lt;br /&gt;
     #ISRUNNING=&amp;quot;0&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
 # Process commands&lt;br /&gt;
 #&lt;br /&gt;
 case &amp;quot;$1&amp;quot; in&lt;br /&gt;
 start)&lt;br /&gt;
     # Start all services one by one&lt;br /&gt;
     for server in $SERVICES; do&lt;br /&gt;
         log_daemon_msg &amp;quot;Starting $NAME&amp;quot; &amp;quot;$server&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
         isrunning $server&lt;br /&gt;
         case &amp;quot;$ISRUNNING&amp;quot; in&lt;br /&gt;
             1) log_progress_msg &amp;quot;Process already started. Please stop first&amp;quot;; log_end_msg 1 ;;&lt;br /&gt;
             0) &lt;br /&gt;
                 # Process is not running&lt;br /&gt;
                 # Start process and sleep...&lt;br /&gt;
                 exefile=&amp;quot;/tmp/exe.OpenSim.$server.sh&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
                 # Need to make external file, had big problems with screen params&lt;br /&gt;
                 echo \#\!/bin/bash &amp;gt; $exefile&lt;br /&gt;
                 echo cd $DIR &amp;gt;&amp;gt; $exefile&lt;br /&gt;
                 echo $MONO $server &amp;gt;&amp;gt; $exefile&lt;br /&gt;
                 chmod +x $exefile&lt;br /&gt;
 &lt;br /&gt;
                 cmd_screen=&amp;quot;screen -S $server -d -m $exefile&amp;quot;&lt;br /&gt;
                 start-stop-daemon --start -b -x /bin/su -m --pidfile=/tmp/su.$server.pid --chdir &amp;quot;$DIR&amp;quot; -- - $USER &amp;quot;-c $cmd_screen&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
                 # Delay between services that are started&lt;br /&gt;
                 sleep $DELAY_STARTUP&lt;br /&gt;
 &lt;br /&gt;
                 rm $exefile 2&amp;gt; /dev/null&lt;br /&gt;
 &lt;br /&gt;
                 # Make PID-file&lt;br /&gt;
                 ps afxu | grep &amp;quot;mono $server&amp;quot; | grep -iEv &amp;quot;grep|screen&amp;quot; | awk {'print $2'} &amp;gt; &amp;quot;$PIDDIR/$server.pid&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
                 isrunning $server&lt;br /&gt;
                 case &amp;quot;$ISRUNNING&amp;quot; in&lt;br /&gt;
                     1) &lt;br /&gt;
                         # Process started ok&lt;br /&gt;
                         #log_progress_msg &amp;quot;Success&amp;quot;; &lt;br /&gt;
                         log_end_msg 0 &lt;br /&gt;
                         ;;&lt;br /&gt;
                     0) &lt;br /&gt;
                         # Process did not start... remove pid-file&lt;br /&gt;
                         rm &amp;quot;$PIDDIR/$server.pid&amp;quot; 2&amp;gt; /dev/null&lt;br /&gt;
                         #log_progress_msg &amp;quot;Failure&amp;quot;; &lt;br /&gt;
                         log_end_msg 1 &lt;br /&gt;
                         ;;&lt;br /&gt;
                 esac&lt;br /&gt;
                 ;;&lt;br /&gt;
         esac&lt;br /&gt;
 &lt;br /&gt;
     done&lt;br /&gt;
     ;;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 stop)&lt;br /&gt;
     _killCount=0&lt;br /&gt;
 &lt;br /&gt;
     for server in $SERVICES_REVERSE; do&lt;br /&gt;
         log_daemon_msg &amp;quot;Stopping $NAME&amp;quot; &amp;quot;$server&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
         isrunning $server&lt;br /&gt;
         case &amp;quot;$ISRUNNING&amp;quot; in&lt;br /&gt;
         1) &lt;br /&gt;
             _killCount=`expr $_killCount + 1`&lt;br /&gt;
             log_progress_msg &amp;quot;Sending shutdown command:&amp;quot;; &lt;br /&gt;
 &lt;br /&gt;
             # We add some backspaces to the command in case something is on the console already&lt;br /&gt;
             echo &amp;quot;screen -S $server -X stuff&amp;quot;                             &lt;br /&gt;
 &lt;br /&gt;
             # Wait for it to shut down...&lt;br /&gt;
             sleep $DELAY_KILL&lt;br /&gt;
 &lt;br /&gt;
             isrunning $server&lt;br /&gt;
             case &amp;quot;$ISRUNNING&amp;quot; in&lt;br /&gt;
                 1) log_progress_msg &amp;quot;is still running.&amp;quot;; log_end_msg 0 ;;&lt;br /&gt;
                 0) log_progress_msg &amp;quot;has been shutdown&amp;quot;; log_end_msg 0 ;;&lt;br /&gt;
             esac&lt;br /&gt;
 &lt;br /&gt;
             ;;&lt;br /&gt;
         0) &lt;br /&gt;
             log_progress_msg &amp;quot;is not running&amp;quot;; log_end_msg 0&lt;br /&gt;
             ;;&lt;br /&gt;
         esac&lt;br /&gt;
 &lt;br /&gt;
     done&lt;br /&gt;
 &lt;br /&gt;
     # Check if any procs are still running&lt;br /&gt;
     for server in $SERVICES; do&lt;br /&gt;
         isrunning $server&lt;br /&gt;
         case &amp;quot;$ISRUNNING&amp;quot; in&lt;br /&gt;
         1) &lt;br /&gt;
             log_warning_msg &amp;quot;Stopping $NAME&amp;quot; &amp;quot;$server is still running: Forcing kill&amp;quot;&lt;br /&gt;
             echo `kill $pid 2&amp;gt; /dev/null`;&lt;br /&gt;
             sleep $DELAY_FORCEKILL&lt;br /&gt;
             echo `kill -9 $pid 2&amp;gt; /dev/null`;&lt;br /&gt;
             sleep 1&lt;br /&gt;
 &lt;br /&gt;
             # Now check again if it is still running...&lt;br /&gt;
             isrunning $server&lt;br /&gt;
             case &amp;quot;$ISRUNNING&amp;quot; in&lt;br /&gt;
                 0) log_progress_msg &amp;quot;Success&amp;quot;; log_end_msg 0 ;;&lt;br /&gt;
                 1) log_progress_msg &amp;quot;Process is still running... Even after \&amp;quot;kill -9 $pid\&amp;quot;. WOW...&amp;quot;; log_end_msg 0 ;;&lt;br /&gt;
             esac&lt;br /&gt;
             ;;&lt;br /&gt;
         0) &lt;br /&gt;
             #log_progress_msg &amp;quot;&amp;quot;; &lt;br /&gt;
             ;;&lt;br /&gt;
         esac&lt;br /&gt;
     done&lt;br /&gt;
 &lt;br /&gt;
     log_begin_msg &amp;quot;$NAME: All done (killed $_killCount procs)&amp;quot;; log_end_msg 0&lt;br /&gt;
 &lt;br /&gt;
     ;;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 status)&lt;br /&gt;
     # Count how many processes we need&lt;br /&gt;
     PROCCOUNT=0&lt;br /&gt;
     for i in $SERVICES; do&lt;br /&gt;
         PROCCOUNT=`expr $PROCCOUNT + 1`&lt;br /&gt;
     done&lt;br /&gt;
 &lt;br /&gt;
     # Go through server PID files and count how many are running&lt;br /&gt;
     log_begin_msg &amp;quot;$NAME: Running processed:&amp;quot;&lt;br /&gt;
     _pidCount=0&lt;br /&gt;
     for server in $SERVICES; do&lt;br /&gt;
 &lt;br /&gt;
         isrunning $server&lt;br /&gt;
         case &amp;quot;$ISRUNNING&amp;quot; in&lt;br /&gt;
             1) &lt;br /&gt;
                 # This server is running&lt;br /&gt;
                 _pidCount=`expr $_pidCount + 1`&lt;br /&gt;
                 log_progress_msg &amp;quot;$server&amp;quot;&lt;br /&gt;
                 ;;&lt;br /&gt;
             0) &lt;br /&gt;
                 ;;&lt;br /&gt;
         esac&lt;br /&gt;
     done&lt;br /&gt;
 &lt;br /&gt;
     log_begin_msg &amp;quot; ($_pidCount of $PROCCOUNT processes are running)&amp;quot;; log_end_msg 0&lt;br /&gt;
 &lt;br /&gt;
     # Check if running proc count matches requires proc count&lt;br /&gt;
     log_begin_msg &amp;quot;$NAME is&amp;quot;&lt;br /&gt;
     if [ $_pidCount -eq $PROCCOUNT ]; then&lt;br /&gt;
         log_progress_msg &amp;quot;running&amp;quot;; log_end_msg 0&lt;br /&gt;
         exit 0&lt;br /&gt;
     else&lt;br /&gt;
         log_progress_msg &amp;quot;NOT running&amp;quot;; log_end_msg 0&lt;br /&gt;
         exit 1&lt;br /&gt;
     fi&lt;br /&gt;
     ;;&lt;br /&gt;
 &lt;br /&gt;
 restart)&lt;br /&gt;
     $0 stop&lt;br /&gt;
     $0 start&lt;br /&gt;
     ;;&lt;br /&gt;
 *)&lt;br /&gt;
     echo &amp;quot;Usage: /etc/init.d/$NAME {start|stop|restart|status}&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
     exit 1&lt;br /&gt;
     ;;&lt;br /&gt;
 esac&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Frankenputer</name></author>	</entry>

	</feed>