PDA

View Full Version : TS startet beim Neustart


phil-90
08-06-2006, 21:18
Ich möchte, dass mein Teamspeak server gestartet wird, wenn der Server Neustartet, hab schon einiges getestet, ging leider nichts;

((besitze einen Suse 9.3))

ein Versuch:

meine boot.local
cd /./var/www/vhosts/phil90.de/private/teampeak/
./teamspeak2-server_startscript stop
./teamspeak2-server_startscript start

was muss ich daran ändern, damit er nach einem restart wieder läuft?

Hab schon gesucht. Leider nichts gefunden.

ScP
09-06-2006, 01:08
I'm using a modified version of the Teamspeak 2 server startscript. It might work for you as well:

#!/bin/bash

# TeamSpeak 2 init script
# June 2005

# This file based on the original TeamSpeak 2 server startscript by Peter 'pwk.linuxfan' Kirk.

### START INIT INFO
# Provides: TeamSpeak2
# Short-Description: TeamSpeak 2 Server
# Description: Start and stop your TeamSpeak 2 server...
### END OF INIT INFO

### START CONFIG SECTION
USER=teamspeak
DIR=/home/teamspeak/tss2_rc2
### END OF CONFIG SECTION

case "$1" in
start)
if [ -e $DIR/ts2.pid ]; then
echo "ts2.pid already exists...";
echo "Is your TeamSpeak 2 server already running?"
exit 1
else
if [ "$UID" = "0" ]; then
for c in $(seq 1 10); do
echo -n "!"
sleep 1
done
echo !
fi
echo "Starting the TeamSpeak 2 server..."
if [ -e $DIR/server_linux ]; then
if [ ! -x $DIR/server_linux ]; then
echo "The server_linux binary is not executable. Trying to set it..."
chmod u+x $DIR/server_linux
fi
if [ -x $DIR/server_linux ]; then
WD=`pwd`
cd $DIR
su $USER -c "$DIR/server_linux -PID=ts2.pid" &
cd $WD
else
echo "The server_linux binary is not executable..."
exit 4
fi
else
echo "Could not find the server_linux binary."
exit 5
fi
fi
;;
stop)
if [ -e $DIR/ts2.pid ]; then
echo -n "Stopping the TeamSpeak 2 server..."
if ( kill -TERM `cat $DIR/ts2.pid` ); then
for c in $(seq 1 300); do
if [ -e $DIR/ts2.pid ]; then
echo -n "."
sleep 1
fi
done
fi
if [ -e $DIR/ts2.pid ]; then
echo "The server does not shutdown cleanly..."
kill -KILL `cat $DIR/ts2.pid`
rm $DIR/ts2.pid
sleep 5
else
echo "done"
fi
else
echo "The ts2.pid file does not exist...";
echo "Is your TeamSpeak 2 server already stopped?"
#exit 7
fi
;;
restart)
$0 stop && $0 start || exit 1
;;
status)
if [ -e $DIR/ts2.pid ]; then
echo "The TeamSpeak 2 server seems to be running."
exit 0
else
echo "The TeamSpeak 2 server seems to be stopped."
exit 3
fi
;;
passwords)
if [ -e $DIR/server.log ]; then
date=$(cat $DIR/server.log | grep "admin account info: username: admin" | tail -n 1 | sed "s/^\([0-9]\+-[0-9]\+-[0-9]\+ [0-9]\+:[0-9]\+:[0-9]\+\).*$/\1/")
spass=$(cat $DIR/server.log | grep "superadmin account info: username: superadmin" | tail -n 1 | sed "s/^.*username: superadmin password: \([a-z0-9]\+\).*$/\1/")
pass=$(cat $DIR/server.log | grep "admin account info: username: admin" | tail -n 1 | sed "s/^.*username: admin password: \([a-z0-9]\+\).*$/\1/")
echo "The following passwords were generated on $date:"
echo "superadmin = \"$spass\""
echo "admin = \"$pass\""
else
echo "The server.log file was not found..."
exit 1
fi
;;
*)
echo "Usage: $0 {start|stop|restart|status|passwords}"
exit 2
esac
exit 0

reaggegandalf
25-06-2006, 10:27
Du musst den script wie oben schon beschrieben übernehmen.
Kopier den Startscript in /etic/init.d.
Dann öffnest du mit dem user root yast und gehst auf Runlevel Editor.
und anschließend aktivierst du das teil, bis dort Ja rechts steht.


Dann hast du den Script im Runlevel und bei jedem Rootneustart wird dein server neugestartet.

Mit cron kannste dir dann auch noch einrichten das nur der TS² Server neustarten soll und nicht der ganze root. dazu muss du in /var/spool/cron/tabs eine Datei mit dem Namen des startenden Benutzers anlegen und dann SEK MIN STD TAG MONAT /PFAD/ZU/TS/teamspeak2-server_startscript restart erstellen. Als Beispiel
0 6 * * * /usr/sbin/shutdown -r NOW
* 7 * * * /home/servers/tss2rc/teamspeak2-server_startscript restart
der Root startet jeden Morgen um 6 Uhr neu.
Die TS² Server starten automatisch alle 7 Tage neu.


Ob man anschließen Cron restarten muss weisss ich nicht ganz genau, schadet ja net also danach einmal rccron restart und das dingen läuft.

shyd0r
08-08-2006, 22:22
Wenn ich den Dienst über Yast/Runlevel starte, bekomme ich diese Nachricht:
/etc/init.d/teamspeak start gab nil (Fehler nicht spezifiziert) zurück:
!!!!!!!!!!!
Starting the TeamSpeak 2 server...
TeamSpeak Server Daemon started with PID 5751
Danach steht im Runlevel statt "Nein*" noch "Nein", "Ja" bekomme ich net hin!

/etc/init.d/teamspeak hat die Rechte 700, der owner ist ts2 und die group users
Das ganze läuft unter SUSE Linux 10.1...

thx 4 ur help

ScP
09-08-2006, 12:56
In der Regel sollte root der Besitzer des init-Scripts sein.

Cyrus
09-08-2006, 13:28
Um die Meldung (gab keinen Fehlercode zurück) zu unterdrücken vermute ich mal reicht das Einfügen von exit 0 nachdem der Server gestartet wurde.

shyd0r
09-08-2006, 14:26
Auch nachdem ich den Besitzer angepasst habe, schaffe ich es nicht den Runlevel auf "Ja" zu setzen, nach der obigen Meldung steht dort nach wie vor "Nein"...

Was mache ich falsch?

Cyrus
09-08-2006, 14:28
Frag mal in einem auf Suse spezialisierten Benutzerforum nach, die werden dir da vermutlich besser helfen können.

Cyrus
10-08-2006, 22:26
funktioniert das startscript wenn du es manuell auslöst?
bis zu welchem punkt kommt das startscript, sollte es beim starten ausgelöst werden?
was ist die ausgabe des startscripts an der zeile, an der es nicht mehr weiterkommt?

Cyrus
10-08-2006, 22:58
also wenn du nichtmal weißt, wie man ein script unter linux startet, dann solltest du erstmal ein linux-buch/tutorial lesen um zumindest die grundlagen zu lernen

Bastian
15-08-2006, 15:30
Sollte es den Anschein haben, als würde Cyrus mit sich selbst reden:

Der User "Bralosch" hat sämtliche seiner Beiträge in diesem Thread gelöscht. Demnach ergibt der Rest keinen Sinn mehr.

shyd0r
18-08-2006, 23:23
Inzwischen habe ich das Problem per cronjob gelöst:
Für den Benutzer "teamspeak" habe ich den cronjob "@reboot cd /pfad/zu/ts; ./teamspeak2-server_startscript start" angelegt. btw: Meinen CS:S Server starte ich genauso.
Bis jetzt habe ich noch keine Probleme festgestellt!:) Sofern ich diesen Weg lieber nicht gehen sollte, sagt es mir bitte ;)
thx

|=HigH^HawK=|
23-08-2006, 13:30
Inzwischen habe ich das Problem per cronjob gelöst:
Für den Benutzer "teamspeak" habe ich den cronjob "@reboot cd /pfad/zu/ts; ./teamspeak2-server_startscript start" angelegt. btw: Meinen CS:S Server starte ich genauso.
Bis jetzt habe ich noch keine Probleme festgestellt!:) Sofern ich diesen Weg lieber nicht gehen sollte, sagt es mir bitte ;)
thx

Also ich wuerde diese Methode auch vorziehen, da es diese Sachen erst startet wenn das komplette System on ist, wenn man es ueber die init macht muss das System noch die kompletten Server starten.

Ich muss aber auch zugebe das ich es selber noch nicht probiert habe, werde dies heute Abend mal machen.

ScP
23-08-2006, 19:01
@shyd0r:
Prinzipiell hat diese Methode nur den Nachteil, dass du auf einen funktionierenden cron Daemon angewiesen bist. Ich bevorzuge das init Script.

tre2006
04-09-2006, 13:50
Der yast bemängelt nur die nicht (für SuSE) korrekte Scriptsyntax.

Für das Einstellen und Starten muss der runlevel-Editor in den Experten Modus gebracht werden.
Dann die Runlevel 3,5 auswählen (ALT+3, ALT+5)
Und Speichern nicht vergessen.
Jetzt kann der Dienst gestartet werden.
Die Fehlermeldung entsteht durch den nicht korrekten Sysntax und Rückmeldung.

MrSpoocy
04-09-2006, 16:59
Doofe frage, aber wie mach ich das denn unter debian, grade das mit dem "RunLevel" ?

Sollte man auf jeden fall in die HowTo anweisung mit einbrigen , mit der hab ich immerhin das ding endlich zum laufen bekommen xD

Cyrus
04-09-2006, 17:17
Doofe frage, aber wie mach ich das denn unter debian, grade das mit dem "RunLevel" ?
Debian hat auf seiner Homepage eine Referenz, die unter anderem auch auf deutsch verfügbar ist.
Im Kapitel über den Bootvorgang ist alles erklärt bzw. dort wird auf weiterführende Hilfe verwiesen.