SCRIPT.README First off, I can take absolutely no credit for this script (thanks go out to the smaug deriv released at one time or another by Wolfpaw.. Going through to find it, I couldn't, but still, I can't take credit for it.. it's a damn good script though. How to install: Easy as pie really.. Open up the startxanth file, search for the #here lines.. Change those (should be rather self explanatory).. Do the same with the xanth.pl.. To edit the crontab, all you have to do is take a look at the crontab file. That's my crontab, exactly as it is, and it works just perfectly. It checks to make sure the mud's up and running every 5 minutes, and if it's not it restarts it. To change your crontab, use the following command : crontab -e copy that line from the crontab file into the nw file that crontab -e pulls up (after changing the path and whatnot of course), then save the crontab.. You should be ready to go from there. Benefits of using this script: From what I've seen, the past two years of using it, this script is rather nice.. I've edited it quite a bit ove the years, and it's always worked for me like magic.. --The mud automatically restarts itself (instead of waiting 3-5 minutes to restart) --The Crontab entry can be used to automatically restart the mud in the event of a server crash. It checks every 5 minutes and if it's not running, it restarts it, running the perl script. --Less hassle than having to worry about your startup script running all of the time. --It's easier on the server itself than running a tcsh or bash script.. To execute this script, simply type the following: nohup ./startxanth & The nohup will make sure that the script keeps running while you're not around The & puts the script in the background (which you should be doing anyways) ng6,31,36,41,46,51,56 * * * * /home/twhiting/xanth/bin/xanth.pl # Set the port number. set port = 3015 if ( "$1" != "" ) set port="$1" # Change to area directory. #here cd ~/rot/area # Set limits. nohup nice limit stack 1024k if ( -e shutdown.txt ) rm -f shutdown.txt # If you want to have logs in a different directory, # change the 'set logfile' line to reflect the directory name. set index = 0 while ( 1 ) set logfile = ../log/$index.log if ( ! -e $logfile ) break @ index++ end # Record starting time date > $logfile date > ../txt/boot.txt # Record initial charges # charges >> $logfile # Run the mud. #here ../src/rot $port >&! $logfile # Record ending charges # charges >> $logfile # # Delete this out if no adb. # if ( -e core ) then # echo '$c' | adb ../src/rot # endif # Restart, giving old connections a chance to die. if ( -e shutdown.txt ) then rm -f shutdown.txt exit 0 endif #here ######################################################################### # Small Mod made by me to use my startup script, so my logs stay as i # # have them -- So my log cleaner/compresser works without mods --GW # # PLEASE GO TO THE LAST LINE OF THE FILE, AND CHANGE WHERE IT SAYS TO!! # ######################################################################### # mudcheck.pl Version 1.0 # # Created: Jun 28, 1997 Jared Proudfoot # # Last Modified: Jun 28, 1997 jproudfo@footprints.net # ######################################################################### # README # # # # This is a pretty simple script that checks to see if a mud is running # # properly. Be sure to change the 'important vars' section. The best # # idea is to run this script from cron every couple of minutes... That # # way you can be sure that it stays running. # ######################################################################### # CHANGES AND HISTORY # # # # v 1.0, Jun 28, 1997 Created. Seems to work fine now. # ######################################################################### ######################################################################### # Define the important vars # # # # Define the host and port number where the mud resides. # #here $server = "localhost"; $port = "9275"; # $string is the string of characters we will look for upon connecting. # # If we connect, but don't see this string, we will assume the mud # # isn't responding (locked up?) and we'll restart it. The string # # *must* be on the first line after connect. # You may enter this as a regexp if you wish. # $replyString = "^\n"; # How long do we wait before we connect timeout (in seconds)? # $timeOut = "60"; # What to execute if we need to restart the mud. Please include the # # FULL path. # #here $exec = "~/xanth/bin/2k"; # Path where you want the mud logs to be kept. #here $logdir = "~/xanth/log"; #here # Path where we should start the mud from. # $startPath = "~/xanth/area"; # That's it. You shouldn't need to change anything after this line. # ######################################################################### # What do we need to use? use Socket; require 5.003; ######################################################################### # Main # ######################################################################### if (&connect_server == 0) { # If we couldn't connect, try and restart. # print ("Connection to $server on port $port failed or timed out after $timeOut seconds!\n"); $time = (scalar localtime); print ("Attempting to restart the mud on $time...\n"); # Restart the mud # &restart_mud; } else { # We connected, but is it working properly? # $readline = (&gl); if ($readline =~ /$replyString/) { # We found what we were looking for, so exit # # properly. # &disconnect_server; exit 1; } # After all those searches, we didn't find anything. The mud # # must be locked up. Lets kill and restart it. # &disconnect_server; print ("The connection was sucessful, but it doesn't seem to be responding\n"); $time = (scalar localtime); print ("Attempting to restart the mud on $time...\n"); system("killall $exec"); &restart_mud; } ######################################################################### # Subroutines # ######################################################################### sub connect_server { # Connect to the server # my ($iaddr, $paddr, $proto); $iaddr = inet_aton ($server) or die ("ERROR: No host: $server!\n"); $paddr = sockaddr_in ($port, $iaddr); $proto = getprotobyname('tcp'); socket (SOCK, PF_INET, SOCK_STREAM, $proto) or die ("ERROR: Socket error $!\n"); alarm ($timeOut); if (connect (SOCK, $paddr)) {; alarm (0); return 1; } else { return 0; } } sub disconnect_server { # Disconnect from the server # close (SOCK); return; } sub sl { # Send a line # my ($line)=@_; print SOCK ("$line") or die ("ERROR: Error writing to server: $!\n"); select SOCK; $|=1; select STDOUT; $|=1; return; } sub gl { # Get a line # my ($buffer, @reply); $buffer=(<SOCK>); # (@reply) = split (/\s/, $buffer); # return (@reply); return ($buffer); } sub restart_mud { # Restart the mud # $timet = time(); chdir $startPath; #here system ("~/xanth/bin/startxanth &"); return; }