this script'll solve yer problems. it runs gdb and catches all errors, in logs, not cores. it prints yer commands you want to send to gdb and their results in unique logs. um, this setup is a lil old, but it should get the point across. more sophisticated scripts following the same technique should be developed by the user -dert this file (runit) should be placed in yer bin dir and contains a few commands that are passed to the debugger and mirrored in the logs. ----------------------------------------- run 4000 where p *ch p arg quit -----------------------------------------y this is the bootgdb script wich goes in bin too, and is run to start the mud. our current version (without comments and quite scary) takes parameters from the command line as well (eg port, max players, wizlock, etc) ------------------------------------------------------------- #! /bin/csh -f set port = 4000 # Change to circle directory. cd ~/circle3 while ( 1 ) # If you want to have logs in a different directory, # change the 'set logfile' line to reflect the directory name. set index = 1000 while ( 1 ) set logfile = log/$index.gdblog if ( ! -e $logfile ) break @ index++ end set DATE = (`date`); echo "autoscript starting game $DATE" >> $logfile # Run da mud #------------------------------------------------------------ # This line is to run under the debugger gdb bin/circle < bin/runit >& $logfile # This line is to run without the debugger # bin/circle >& $logfile #------------------------------------------------------------ # Delete this out if no adb. # if ( -e core ) then # echo '$c' | adb bin/circle # endif fgrep "self-delete" $logfile >> log/delete fgrep "death trap" $logfile >> log/dts fgrep "killed" $logfile >> log/rip fgrep "Running" $logfile >> log/restarts fgrep "advanced" $logfile >> log/levels fgrep "equipment lost" $logfile >> log/rentgone fgrep "usage" $logfile >> log/usage fgrep "new player" $logfile >> log/newplayers fgrep "SYSERR" $logfile >> log/errors fgrep "(GC)" $logfile >> log/godcmds fgrep "Bad PW" $logfile >> log/badpws fgrep "is writing help" $logfile >> log/help_write fgrep "OLC:" $logfile >> log/olc tail -50 $logfile | wall # this sends out the reasons for the crash to everyone online, # might wanna disable it ;) if (-r .killscript) then set DATE = (`date`); echo "autoscript killed $DATE" >> syslog rm .killscript exit endif # Restart, giving old connections a chance to die. sleep 1 end ----------------------------------------------------------------
This archive was generated by hypermail 2b30 : 12/07/00 PST