Go Back   EQEmulator Home > EQEmulator Forums > Support > Support::Linux Servers

Support::Linux Servers Support forum for Linux EQEMu users.

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #4  
Old 10-05-2006, 02:12 PM
John Adams
Demi-God
 
Join Date: Jul 2006
Posts: 1,552
Default

First, a disclaimer... I have no idea about Linux, this is my first attempt to write a bash script in 10 years... so forgive me if it's a) not formatted properly, b) fails on your system, or c) can be improved.

My goal was to make one script for start, stop, status, and restarting Emu. I think I have everything working except that last MiniLogin.exe thing. I've tried eq4me's last suggestion, but I am getting a "Failed to open port 5999". If I run wine MiniLogin.exe by itself, I usually get it to work (though, connecting a client *still* isn't quite working hehe...)

Ok, this post is just about the script. So, take this, tweak,and hope it comes in handy. It's a little "heavy", but adds some checks and balances.

Code:
#! /bin/bash
# Original Script Author: ???
# Editor: John Adams - 10/2006
#
case "$1" in
  start)

    if [ -e .lock-world ] || [ -e .lock-launcher ] || [ -e .lock-minilogin ]
    then
      echo "The emulator appears to already be running ?";
      echo "If you are sure the server is not running, delete .lock-world and .lock-launcher."
      exit 1
    else
      if [ "$UID" = "0" ]
      then
        echo WARNING ! For security reasons we advise: DO NOT RUN THE SERVER AS ROOT
        exit 1
      fi
      echo "Attempting to start the World..."
      if [ -e world ]
      then
        if [ ! -x world ]
        then
          echo "world is not executable, trying to set it"
          chmod u+x world
        fi
        if [ -x world ]
        then
          ulimit -c 99999999
          rm -f .world_shutdown
          set -x
          LNAME="peq" #launcher name
          if [ "$1" = "test" ]
          then
            LNAME="test"
          fi
          P=`pwd`
          export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$P"
          mkdir -p logs 2>&1 > /dev/null
          if [ ! -e .lock-zones -a ! -e .lock-world ]
          then
            for f in logs/eqemu_*.log
              do
                if [ "$f" = "logs/eqemu_commands_zone.log" ]
                then
                  continue;
                fi
              rm -f $f
            done
          fi
          if [ ! -e .lock-world ]
          then
            touch .lock-world
            ./persist_world 2>&1 > logs/world &
            sleep 15
          fi
        else
          echo "World is still not executable. Fix this!"
          exit 4
        fi
      else
        echo "Couldnt find world"
	exit 5
      fi

      # Launcher
      echo "Attempting to start Launcher/Zones..."
      if [ -e eqlaunch ]
      then
        if [ ! -x eqlaunch ]
        then
          echo "Launcher is not executable, trying to set it..."
          chmod u+x eqlaunch
        fi
        if [ -x eqlaunch ]
        then
          rm -f .zone_shutdown
          LNAME="zones"                   #launcher name
          if [ ! -e .lock-launcher ]
          then
            touch .lock-launcher
            ./eqlaunch $LNAME 2>&1 > logs/launcher &
            sleep 40                      #wait on launchers to start minilogin
          fi
        else
          echo "World is still not executable. Fix this!"
          exit 4
        fi
      else
        echo "Couldnt find eqlaunch"
	exit 5
      fi

      # If MiniLogin.exe exists, launch it last (Angelox)
      echo "Attempting to start MiniLogin.exe . . ."
      if [ -e MiniLogin.exe ]
      then
        if [ ! -x MiniLogin.exe ]
        then
          echo "MiniLogin.exe is not executable, trying to set it..."
          chmod u+x MiniLogin.exe
        fi
        if [ -x MiniLogin.exe ]
        then
          rm -f .minilogin_shutdown
          if [ ! -e .lock-minilogin ]
          then
            touch .lock-minilogin
            wine MiniLogin.exe > /tmp/Minilogin.log &
          fi
        else
          echo "World is still not executable. Fix this!"
          exit 4
        fi
      else
        echo "Couldnt find eqlaunch"
	exit 5
      fi

    fi
  ;;
  
  stop)

    echo "Attempting to stop the World..."
    touch .minilogin_shutdown
    touch .zone_shutdown
    touch .world_shutdown
    killall world eqlaunch zone wineserver MiniLogin.exe
    sleep 3

    if ps ax|grep -e 'w[o]rld' -e 'z[o]ne' -e 'eq[l]aunch' >/dev/null
    then
      killall -9 world eqlaunch zone wineserver MiniLogin.exe
      sleep 2
    fi

    ./cleanipc
    rm -f .lock-zones .lock-world .lock-login .lock-launcher .lock-minilogin

  ;;

  status)

    if [ -e world.pid ]; then
      echo "the server seems to be running"
      exit 0
    else
      echo "the server seems to be stopped"
	exit 3
    fi
  ;;
  
  restart)

    echo "restart all eqemulator services - not implemented yet"
  ;;

  *)
    echo "Usage: $0 {start|stop|restart|status}"
    exit 2
esac
exit 0
Drop this in your server dir, and run it as ./emu start|stop|status (one of those three options)

Not sure how to do the restart option. Anyone?
Reply With Quote
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 11:28 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3