Sie sind nicht angemeldet.

[Linux] Start Script

Lieber Besucher, herzlich willkommen bei: sourceserver.info. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

Dienstag, 11. Dezember 2012, 16:34

Start Script

Hallo liebe SoSi Community,

Ich nutze das Start/Stop und Restart Script. Nun wollte ich ein Autorestart einbauen der ja ganz einfach via Cron. Dann habe ich crontab -e in SSH eingegeben und das hinzugefügt * 6 * * * * /etc/init.d/cssserver1 restart jeden Tag ein Autorestart. Damals ging es auch noch mit dem Script nur dieses mal nicht. Eigendlich wir ja in /var/mail/root eine Meldung erstellt ob es funktioniert hat oder nicht. Leider wird keine Meldung erstellt. Habe dann mal getestet ob Cron überhaupt an ist aber das ist zu 100% an. Habe mir die /var/log/syslog angesehen da steht auch nix nur das Cron erfolgreich restartet wurde. Denke es liegt am Script. Danke schonmal im vorraus für euere hilfe :D

Spoiler Spoiler

#! /bin/bash
#
# Start the Counter-Strike: Source dedicated server.
#

# !!!!!!!!!!!!!! CHANGE THIS TO THE USER YOU USE FOR YOUR SERVER !!!!!!!!!!!!!!!
CS_USER=USER

# # DON'T FORGET TO CHANGE THE PATH TO YOUR NEEDS!
DIR=/home/USER/css/

TASKSET=""
DAEMON=srcds_run
PARAMS="-game cstrike +maxplayers <PLAYER> +map de_dust2 +ip <ROOT IP> -port <PORT> +exec server.cfg -autoupdate"

NAME=CSS-MG
DESC="CS:S dedicated server $NAME"

# No edits (should be) necessary beyond this line

PATH=/bin:/usr/bin:/sbin:/usr/sbin

if [ ! -x `which awk` ]; then echo "You need awk for this script"; exit 1; fi
if [ ! -x `which screen` ]; then echo "You need screen (the program, moron!) for this script"; exit 1; fi

if [ `whoami` = root ]
then
usagetype=root
else
usagetype=nonroot
fi

start() {
if [ ! -d $DIR ]; then echo " ... No such directory: $DIR!"; exit 1; fi
if [ ! -x $DIR/$DAEMON ]; then echo "$DIR/$DAEMON does not exist or is not executable!"; exit 1; fi
if status; then echo " ... $DESC: $NAME is already running!"; exit 1; fi

case "$usagetype" in
root)
su - $CS_USER -c "cd $DIR; ulimit -c unlimited; screen -AmdS $NAME $TASKSET ./$DAEMON $PARAMS"
;;
nonroot)
cd $DIR ; ulimit -c unlimited; screen -AmdS $NAME $TASKSET ./$DAEMON $PARAMS
;;
esac

}

stop () {
if ! status; then echo " ... $DESC $NAME could not be found. Probably not running."; exit 1; fi

case "$usagetype" in
root)
tmp=$(su - $CS_USER -c "screen -ls" | awk -F . "/(\d*)$NAME / {print \$1}" | awk '{print $1}')
su - $CS_USER -c "screen -r $tmp -X quit"
;;
nonroot)
screen -r $(screen -ls | awk -F . "/(\d*)$NAME / {print \$1}" | awk '{print $1}') -X quit
;;
esac
}

status () {
case "$usagetype" in
root)
su - $CS_USER -c "screen -ls" | grep [.]$NAME[[:space:]] > /dev/null
;;
nonroot)
screen -ls | grep [.]$NAME[[:space:]] > /dev/null
;;
esac
}

watch () {
if ! status; then echo "$DESC $NAME could not be found. Probably not running."; exit 1; fi

case "$usagetype" in
root)
tmp=$(su - $CS_USER -c "screen -ls" | awk -F . "/(\d*)$NAME / {print \$1}" | awk '{print $1}')
tmp2=$(su - $CS_USER -c "screen -r $tmp")
if [[ "$tmp2" =~ /dev/pts/([0-9]+) ]]
then
chmod o+rw /dev/pts/${BASH_REMATCH[1]}
su - $CS_USER -c "screen -r $tmp"
fi
;;
nonroot)
screen -r $(screen -ls | awk -F . "/(\d*)$NAME / {print \$1}" | awk '{print $1}')
;;
esac
}

case "$1" in
start)
echo "Starting $DESC: $NAME"
start
echo " ... done."
;;

stop)
echo "Stopping $DESC: $NAME"
stop
echo " ... done."
;;

restart)
echo "Restarting $DESC: $NAME"
status && stop
start
echo " ... done."
;;

status)
if status
then echo "$DESC: $NAME is UP"
else echo "$DESC: $NAME is DOWN"
fi
;;
watch)
watch
;;

*)
echo "Usage: $0 {start|stop|status|restart|watch}"
exit 1
;;

esac


exit 0


Lg
LeXx

Impact

Super Moderator

Beiträge: 1 276

Rootserver vorhanden: Nein

  • Nachricht senden

2

Dienstag, 11. Dezember 2012, 16:39

Ich empfehle dir das Startscript in meiner Signatur, dies hat bereits eine eingebaute Funktion für solche Dinge :)
Das ganze würde dann in etwa so aussehen:

Quellcode

1
30 5 * * * /home/css/minigame/tmp/cron-minigame-restart


MfG
Impact

3

Dienstag, 11. Dezember 2012, 16:48

Impact kenne das Script ja. Aber mir reicht meins :D. Deins ist sehr schön und gut aber, mir persönlich hat es einfach zuviele Funktionen die ich nicht brauche :P

Lg
LeXx