Sie sind nicht angemeldet.

[Linux] Start Script

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