Log in

View Full Version : Linux Start/Stop script


HnathBST
11-01-2013, 03:58 AM
I have been using the same start script for a while now and I finally decided to modify it and make it my own.

File: EQServer.sh

ulimit -c unlimited
case "$1" in
start)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.

rm -rf logs/*.log
chmod --recursive ugo+rwx quests

#sleep 5
echo Loading Shared Mem...
./shared_memory > /dev/null 2>&1 &

sleep 2
echo Starting World Server...
./world > /dev/null 2>&1 &
echo $! > world.pid

sleep 3
echo Starting Query Server...
./queryserv > /dev/null 2>&1 &
echo $! > queryserv.pid

sleep 5
echo Starting the Zone Launcher...
./eqlaunch zone > /dev/null 2>&1 &
echo $! > eqlaunch.pid

sleep 5
echo The server is mostly ready... Give it a couple of minutes
echo to load stuff from the database before the users start logging in.
;;
stop)
kill `cat world.pid`
kill `cat queryserv.pid`
kill `cat eqlaunch.pid`
rm -f *.pid
echo All server components have been exited.
;;
restart|reload)
$0 stop
$0 start
;;
status)
if [ -f world.pid ] && ps -p `cat world.pid` > /dev/null
then
echo -e World Server '\t\t' [$(tput bold)$(tput setaf 2)UP$(tput sgr0)]
else
echo -e World Server '\t\t' [$(tput bold)$(tput setaf 1)DOWN$(tput sgr0)]
fi
if [ -f queryserv.pid ] && ps -p `cat queryserv.pid` > /dev/null
then
echo -e Query Server '\t\t' [$(tput bold)$(tput setaf 2)UP$(tput sgr0)]
else
echo -e Query Server '\t\t' [$(tput bold)$(tput setaf 1)DOWN$(tput sgr0)]
fi
if [ -f eqlaunch.pid ] && ps -p `cat eqlaunch.pid` > /dev/null
then
echo -e Zone Launcher '\t\t' [$(tput bold)$(tput setaf 2)UP$(tput sgr0)]
else
echo -e Zone Launcher '\t\t' [$(tput bold)$(tput setaf 1)DOWN$(tput sgr0)]
fi
;;
help|*)
printf "Usage: \n ./EQServer.sh [start|stop|reload|restart|status|help]"
printf "\n\n"
printf " start\t\tStarts the server components\n"
printf " stop\t\tStops all the server components started by this script\n"
printf " restart/reload\tRestarts the server\n"
printf " status\t\tLists the status of the server components\n"
printf " help\t\tDisplays this message\n"
;;

esac
exit 0


Drop this in your server folder (with zone and world...) and execute it by running: ./EQServer.sh

Usage:

./EQServer.sh [start|stop|reload|restart|status|help]

start Starts the server components
stop Stops all the server components started by this script
restart/reload Restarts the server
status Lists the status of the server components
help Displays this message


I know this works on Fedora (and likely centos/redhat etc) I haven't used it on any other flavor of linux so your results may vary.

--Webbe

cavedude
11-01-2013, 12:16 PM
Yeah, that old startup script has been around forever, I don't even know who wrote it originally. Good work modernizing it some, I especially like the status addition.

HnathBST
11-01-2013, 03:08 PM
Yeah, I got tire of doing ps to try and figure out what isn't running lol. I'd eventually like to add other status like #of zones etc. in time.

demonstar55
12-16-2013, 05:54 PM
https://gist.github.com/mackal/7994207

Made some changes to it. Including using pgrep to count how many zones are up :P (note, you might have to use the commented one on CentOS etc since they use a different version of pgrep)

DreamDemon
12-28-2014, 01:26 PM
I updated it to include loginserver and ucs. This was tested on Ubuntu.


ulimit -c unlimited
case "$1" in
start)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.

rm -rf logs/*.log
chmod --recursive ugo+rwx quests

#sleep 5
echo Loading Shared Mem...
./shared_memory > /dev/null 2>&1 &

echo Starting Login Server...
./loginserver > /dev/null 2>&1 &
echo $! > loginserver.pid

sleep 2
echo Starting World Server...
./world > /dev/null 2>&1 &
echo $! > world.pid

sleep 3
echo Starting Query Server...
./queryserv > /dev/null 2>&1 &
echo $! > queryserv.pid

echo Starting UCS Server...
./ucs > /dev/null 2>&1 &
echo $! > ucs.pid

sleep 5
echo Starting the PEQ Zone Launcher...
./eqlaunch peq > /dev/null 2>&1 &
echo $! > eqlaunch.pid

sleep 5
echo The server is mostly ready... Give it a couple of minutes
echo to load stuff from the database before the users start logging in.
;;
stop)
kill `cat loginserver.pid`
kill `cat world.pid`
kill `cat queryserv.pid`
kill `cat ucs.pid`
kill `cat eqlaunch.pid`
rm -f *.pid
echo All server components have been exited.
;;
restart|reload)
$0 stop
$0 start
;;
status)
if [ -f loginserver.pid ] && ps -p `cat loginserver.pid` > /dev/null
then
echo -e Login Server '\t\t' [$(tput bold)$(tput setaf 2)UP$(tput sgr0)]
else
echo -e Login Server '\t\t' [$(tput bold)$(tput setaf 1)DOWN$(tput sgr0)]
fi
if [ -f world.pid ] && ps -p `cat world.pid` > /dev/null
then
echo -e World Server '\t\t' [$(tput bold)$(tput setaf 2)UP$(tput sgr0)]
else
echo -e World Server '\t\t' [$(tput bold)$(tput setaf 1)DOWN$(tput sgr0)]
fi
if [ -f queryserv.pid ] && ps -p `cat queryserv.pid` > /dev/null
then
echo -e Query Server '\t\t' [$(tput bold)$(tput setaf 2)UP$(tput sgr0)]
else
echo -e Query Server '\t\t' [$(tput bold)$(tput setaf 1)DOWN$(tput sgr0)]
fi
if [ -f ucs.pid ] && ps -p `cat ucs.pid` > /dev/null
then
echo -e UCS Server '\t\t' [$(tput bold)$(tput setaf 2)UP$(tput sgr0)]
else
echo -e UCS Server '\t\t' [$(tput bold)$(tput setaf 1)DOWN$(tput sgr0)]
fi
if [ -f eqlaunch.pid ] && ps -p `cat eqlaunch.pid` > /dev/null
then
echo -e Zone Launcher '\t\t' [$(tput bold)$(tput setaf 2)UP$(tput sgr0)]
else
echo -e Zone Launcher '\t\t' [$(tput bold)$(tput setaf 1)DOWN$(tput sgr0)]
fi
;;
help|*)
printf "Usage: \n ./EQServer.sh [start|stop|reload|restart|status|help]"
printf "\n\n"
printf " start\t\tStarts the server components\n"
printf " stop\t\tStops all the server components started by this script\n"
printf " restart/reload\tRestarts the server\n"
printf " status\t\tLists the status of the server components\n"
printf " help\t\tDisplays this message\n"
;;

esac
exit 0