Jump to content

mangos init daemon


Recommended Posts

Quickly whipped this up (currently setting up mangos on ubuntu, albeit slowly)

Anyone want to review it? (I'll update this post)

Possible area's of improvement -

security in this script? path?

Provide 'status' option.

Cleanup variables / overall script

#!/bin/sh

### BEGIN INIT INFO

# Provides: mangosd

# Required-Start: $network $local_fs

# Required-Stop: $network $local_fs

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6

# Short-Description: Daemonized version of mangos wow server.

# Description: Daemon for mangosd and realmd processes.

### END INIT INFO

# installing this init;

#sudo chmod 755 /etc/init.d/mangosd

#sudo update-rc.d mangosd defaults

#sudo invoke-rc.d mangosd start

DAEMON_USER="mangouser" # !!!CHANGE THIS!!!!

RUN_AT_STARTUP="YES"

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/mangos/bin

DESC="Mangos Daemon"

NAME1="mangos-realmd"

NAME2="mangos-worldd"

DAEMON1=/opt/mangos/bin/mangos-realmd

DAEMON2=/opt/mangos/bin/mangos-worldd

PIDFILE1=/var/run/$NAME1.pid

PIDFILE2=/var/run/$NAME2.pid

UMASK=022 # Change this to 0 if running daemon as its own user

PKGNAME=mangosd

SCRIPTNAME=/etc/init.d/$PKGNAME

# Exit if the package is not installed

[ -x "$DAEMON1" -a -x "$DAEMON2" ] || exit 0

# Load the VERBOSE setting and other rcS variables

[ -f /etc/default/rcS ] && . /etc/default/rcS

# Define LSB log_* functions.

# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.

. /lib/lsb/init-functions

if [ -z "$RUN_AT_STARTUP" -o "$RUN_AT_STARTUP" != "YES" ]

then

log_warning_msg "Not starting $PKGNAME, edit /etc/default/$PKGNAME to start it."

exit 0

fi

if [ -z "$DAEMON_USER" ]

then

log_warning_msg "Not starting $PKGNAME, DAEMON_USER not set."

exit 0

fi

#

# Function that starts the daemon/service

#

do_start()

{

# Return

# 0 if daemon has been started

# 1 if daemon was already running

# 2 if daemon could not be started

start-stop-daemon --start --background --quiet --pidfile $PIDFILE1 --exec $DAEMON1 \\

--chuid $DAEMON_USER --user $DAEMON_USER --umask $UMASK --test > /dev/null

RETVAL1="$?"

start-stop-daemon --start --background --quiet --pidfile $PIDFILE2 --exec $DAEMON2 \\

--chuid $DAEMON_USER --user $DAEMON_USER --umask $UMASK --test > /dev/null

RETVAL2="$?"

[ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] || return 1

start-stop-daemon --start --background --quiet --pidfile $PIDFILE1 --make-pidfile --exec $DAEMON1 \\

--chuid $DAEMON_USER --user $DAEMON_USER --umask $UMASK

RETVAL1="$?"

sleep 2

start-stop-daemon --start --background --quiet --pidfile $PIDFILE2 --make-pidfile --exec $DAEMON2 \\

--chuid $DAEMON_USER --user $DAEMON_USER --umask $UMASK

RETVAL2="$?"

[ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] || return 2

}

#

# Function that stops the daemon/service

#

do_stop()

{

# Return

# 0 if daemon has been stopped

# 1 if daemon was already stopped

# 2 if daemon could not be stopped

# other if a failure occurred

start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user $DAEMON_USER --pidfile $PIDFILE2

RETVAL2="$?"

start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user $DAEMON_USER --pidfile $PIDFILE1

RETVAL1="$?"

[ "$RETVAL1" = "2" -o "$RETVAL2" = "2" ] && return 2

rm -f $PIDFILE1 $PIDFILE2

[ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] && return 0 || return 1

}

case "$1" in

start)

[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME1"

do_start

case "$?" in

0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;

2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;

esac

;;

stop)

[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME1"

do_stop

case "$?" in

0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;

2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;

esac

;;

restart|force-reload)

log_daemon_msg "Restarting $DESC" "$NAME1"

do_stop

case "$?" in

0|1)

do_start

case "$?" in

0) log_end_msg 0 ;;

1) log_end_msg 1 ;; # Old process is still running

*) log_end_msg 1 ;; # Failed to start

esac

;;

*)

# Failed to stop

log_end_msg 1

;;

esac

;;

*)

echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2

exit 3

;;

esac

:

Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use