Sponsor-Board.de
Screen wiederholen

+- Sponsor-Board.de (https://www.sponsor-board.de)
+-- Forum: Community (/forumdisplay.php?fid=56)
+--- Forum: Hilfe (/forumdisplay.php?fid=102)
+---- Forum: Linux-Server (/forumdisplay.php?fid=105)
+---- Thema: Screen wiederholen (/showthread.php?tid=28993)


Screen wiederholen - Neo - 18.08.2012 12:58

Hey,

Ich habe mehrere Gameserver mit screen laufen, seitdem ich das neue Startscript benutze um die Gameserver täglich neuzustarten ist mir aufgefallen das bei: screen -r keiner der Laufenden Session angezeigt wird. Weder als Root noch als unpreviligierter User. Damit erklärt sich der fehler warum der Restart nicht funktioniert. Jemand rat wie das behebe?

Teklab ist aber trotzdem in der lage den Prozess zu töten weshalb auch immer.

Code:

PHP-Code:
# replace <newuser> with the user you created above
SRCDS_USER="test"

# Do not change this path
PATH=/bin:/usr/bin:/sbin:/usr/sbin

# The path to the game you want to host. example = /home/newuser/dod
DIR=/home/.........
DAEMON=$DIR/srcds_run

# Change all PARAMS to your needs.
PARAMS="-console -game left4dead2 +map c1m1_hotel +maxplayers 8 "
NAME=L4D1
DESC
="Left4Dead2"

case "$1" in
start
)
echo 
"Starting $DESC$NAME"
if [ -e $DIR ]; then
cd $DIR
su $SRCDS_USER 
--"screen -d -m -S $NAME $DAEMON $PARAMS"
else
echo 
"No such directory: $DIR!"
fi
;;

stop)
if 
screen -ls |grep $NAMEthen
echo -"Stopping $DESC$NAME"
kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
echo 
" ... done."
else
echo 
"Couldn't find a running $DESC"
fi
;;

restart)
if 
screen -ls |grep $NAMEthen
echo -"Stopping $DESC$NAME"
kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
echo 
" ... done."
else
echo 
"Couldn't find a running $DESC"
fi
echo -"Starting $DESC$NAME"
cd $DIR
screen 
---S $NAME $DAEMON $PARAMS
echo " ... done."
;;

status)
# Check whether there's a "srcds" process
ps aux grep -v grep grep srcds_r > /dev/null
CHECK
=$?
$CHECK -eq 0 ] && echo "SRCDS is UP" || echo "SRCDS is DOWN"
;;

*)
echo 
"Usage: $0 {start|stop|status|restart}"

exit 1
;;
esac

exit 




RE: Screen wiederholen - Splak - 18.08.2012 14:03

Naja, das Problem liegt ja dadrin, dass ein Prozess von Teklab vorhanden ist aber wiederum doch nicht.

Schon mal Logs nachgeschaut? Den Restart Befehl manuell mal ausgeführt in der Console?

Er kann ja keinen Prozess erstellen, der bereits vorhanden ist.

Genauso verwirrt mich das:

PHP-Code:
# Change all PARAMS to your needs.
PARAMS="-console -game left4dead2 +map c1m1_hotel +maxplayers 8 "
NAME=L4D1
DESC
="Left4Dead2" 


Warum DESC in Anführungsstrichen und NAME nicht?

Wenn Start und Stop manuell via Console funktionieren, dann müsst es eigentlich auch tun. Eek

MfG


RE: Screen wiederholen - Madmatti - 18.08.2012 14:55

Du kannst screens nur dann mit fremden Benutzern öffnen, wenn die Screens öffentlich sind. Dafür gibt es einen Parameter, den ich zugegebenermaßen gerade nicht auswendig weiß. Teklab benutzt einen User, mit dem du dich einloggen müsstest, damit du den Screen siehst. Du kannst auf dem Server ja mal ein
ps aux | grep L4D -i
ausführen, da siehst du in der ersten Spalte den Benutzer unter dem das ausgeführt wird.
Außerdem benutzt Teklab ja hier kein "screen -r", sondern einen "kill" Befehl.
kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
Wofür genau die Variablen stehen, weiß ich jetzt nicht, aber wenn du den ps aux Befehl von oben nimmst und dir die PID raussuchst, kannst du den auch per
kill <PID>
schließen.

Bei screen -r kommen nur Screens, die du unter diesem User gestartet hast.

Lg Madmatti

Neo schrieb:
Hey,

Ich habe mehrere Gameserver mit screen laufen, seitdem ich das neue Startscript benutze um die Gameserver täglich neuzustarten ist mir aufgefallen das bei: screen -r keiner der Laufenden Session angezeigt wird. Weder als Root noch als unpreviligierter User. Damit erklärt sich der fehler warum der Restart nicht funktioniert. Jemand rat wie das behebe?

Teklab ist aber trotzdem in der lage den Prozess zu töten weshalb auch immer.

Code:

PHP-Code:
# replace <newuser> with the user you created above
SRCDS_USER="test"

# Do not change this path
PATH=/bin:/usr/bin:/sbin:/usr/sbin

# The path to the game you want to host. example = /home/newuser/dod
DIR=/home/.........
DAEMON=$DIR/srcds_run

# Change all PARAMS to your needs.
PARAMS="-console -game left4dead2 +map c1m1_hotel +maxplayers 8 "
NAME=L4D1
DESC
="Left4Dead2"

case "$1" in
start
)
echo 
"Starting $DESC$NAME"
if [ -e $DIR ]; then
cd $DIR
su $SRCDS_USER 
--"screen -d -m -S $NAME $DAEMON $PARAMS"
else
echo 
"No such directory: $DIR!"
fi
;;

stop)
if 
screen -ls |grep $NAMEthen
echo -"Stopping $DESC$NAME"
kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
echo 
" ... done."
else
echo 
"Couldn't find a running $DESC"
fi
;;

restart)
if 
screen -ls |grep $NAMEthen
echo -"Stopping $DESC$NAME"
kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
echo 
" ... done."
else
echo 
"Couldn't find a running $DESC"
fi
echo -"Starting $DESC$NAME"
cd $DIR
screen 
---S $NAME $DAEMON $PARAMS
echo " ... done."
;;

status)
# Check whether there's a "srcds" process
ps aux grep -v grep grep srcds_r > /dev/null
CHECK
=$?
$CHECK -eq 0 ] && echo "SRCDS is UP" || echo "SRCDS is DOWN"
;;

*)
echo 
"Usage: $0 {start|stop|status|restart}"

exit 1
;;
esac

exit