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
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:
# 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 -l -c "screen -d -m -S $NAME $DAEMON $PARAMS"
else
echo "No such directory: $DIR!"
fi
;;
stop)
if screen -ls |grep $NAME; then
echo -n "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 $NAME; then
echo -n "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 -n "Starting $DESC: $NAME"
cd $DIR
screen -d -m -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 0