#! /bin/csh -f # Set the executable name. set exec = 13C # Set the logfile directory. set log_dir = ../log # Set the port number. if ( "$1" != "" ) then set port = $1 else set port = 5000 endif # Change to area directory. cd ../area # Set limits. nohup nice unlimit stack unlimit core if ( -e shutdown.txt ) rm -f shutdown.txt 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_dir/$index.log if ( ! -e $logfile && ! -e $log_dir/$index.crash ) break @ index++ end # Record starting time. date > $logfile # Run program. # Check if already running. set matches = `netstat -an | grep ".$port " | grep -c LISTEN` if ( $matches >= 1 ) then # Already running echo Something is already running on port: $port. exit 0 endif ../src/$exec $port >&! $logfile # Delete this out if no gdb. set core = $exec.core if ( -e $core ) then set cmd_file = gdb_cmd.dat echo "" >>&! $logfile echo "-----[ Crash Trace Data ]-----" >>&! $logfile echo "bt" >&! $cmd_file gdb -batch -x $cmd_file -c $core -se ../src/$exec >>&! $logfile if ( -e $cmd_file ) then rm -f $cmd_file endif mv $logfile $log_dir/$index.crash mv $core ../src/$core.old endif # Restart, giving old connections a chance to die. if ( -e shutdown.txt ) then rm -f shutdown.txt exit 0 endif sleep 5 end