From 9ca3d5f3c50de8bfcf24c59daf3f316f88590d9e Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Thu, 25 Jun 2015 21:07:58 +1000 Subject: [PATCH] Add distro-agnostic systemd init script --- tools/install.sh | 5 +++ tools/systemd/arkdaemon.init | 86 ++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100755 tools/systemd/arkdaemon.init diff --git a/tools/install.sh b/tools/install.sh index 87dcf23..2cb6be6 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -61,8 +61,13 @@ if [ ! -z "$1" ]; then echo "rc-update del arkmanager default" fi elif [[ /etc/systemd/system.conf ]]; then # used by systemd + mkdir -p /usr/libexec/arkmanager + cp systemd/arkdaemon.init "/usr/libexec/arkmanager/arkmanager.init" + chmod +x "/usr/libexec/arkmanager/arkmanager.init" cp systemd/arkdeamon.service /etc/systemd/system/arkmanager.service systemctl enable arkmanager.service + echo "Ark server will now start on boot, if you want to remove this feature run the following line" + echo "systemctl disable arkmanager.service" fi # Create a folder in /var/log to let Ark tools write its own log files diff --git a/tools/systemd/arkdaemon.init b/tools/systemd/arkdaemon.init new file mode 100755 index 0000000..6faa93e --- /dev/null +++ b/tools/systemd/arkdaemon.init @@ -0,0 +1,86 @@ +#!/bin/bash +# +# /usr/libexec/arkmanager/arkmanager.init +# +# ARK manager daemon +# +# chkconfig: 2345 80 20 +# description: ARK manager daemon used to start the server and keep it updated +# processname: ShooterGameServer +# config: /etc/arkmanager/arkmanager.cfg + +### BEGIN INIT INFO +# Provides: ARK manager deamon +# Required-Start: networking +# Required-Stop: networking +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: ARK manager deamon +# Description: ARK manager daemon used to start the server and keep it updated +# +### END INIT INFO + +# Global variables +source /etc/arkmanager/arkmanager.cfg + +NAME="ShooterGameServer" +LOGFILE="${logdir}/${NAME}.log" +DAEMON="/usr/bin/arkmanager" + +GREEN="\\033[1;32m" +RED="\\033[1;31m" +NORMAL="\\033[0;39m" + +set -e + +# If the daemon is not there, then exit. +test -x $DAEMON || exit 5 + +case "$1" in + start) + echo -n "Starting $NAME: " + su -s /bin/sh -c "$DAEMON start" $steamcmd_user > /dev/null + sleep 5 + PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'` + if [ -n "$PID" ]; then + echo "$PID" >/var/run/arkmanager.pid + echo "[" "$GREEN" " OK " "$NORMAL" "]" + exit 0 + else + echo "[" "$RED" " FAILED " "$NORMAL" "]" + exit 1 + fi + ;; + + stop) + echo -n "Stopping $NAME: " + su -s /bin/sh -c "$DAEMON stop" $steamcmd_user > /dev/null + sleep 5 + PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'` + if [ -n "$PID" ]; then + echo "[" "$RED" " FAILED " "$NORMAL" "]" + exit 1 + else + echo "[" "$GREEN" " OK " "$NORMAL" "]" + rm /var/run/arkmanager.pid + exit 0 + fi + ;; + + restart) + echo -n "Restarting $NAME: " + su -s /bin/sh -c "$DAEMON restart" $steamcmd_user > /dev/null + echo "OK" + ;; + + status) + su -s /bin/sh -c "$DAEMON status" $steamcmd_user + exit 0 + ;; + + *) + # For invalid arguments, print the usage message. + echo "Usage: $0 {start|stop|restart|status}" + exit 1 + ;; +esac