View Full Version : TS Server automatisch starten
Als Linux Neuling konnte ich bislang TeamSpeak2 Server erfolgreich installieren.
Am automatischen Start beim Reboot des Servers scheitere ich allerdings.
Auf dem Server läuft Suse 9.0. Ich hab ungefähr in Erfahrung gebracht, dass dafür Einstellungen in init.d und rc3.d nötig sind.
Entsprechend der Readme habe ich für TS einen eigenen Benutzer ts angelegt.
Kann mir da jemand helfen?
Hier hast du ein modifiziertes Startscript:
# ! /bin/bash
#
# Modified TeamSpeak 2 server startscript
# Original script written by: pwk.linuxfan 2004
#
# . /etc/rc.d/init.d/functions
#
### BEGIN INIT INFO
# Provides: teamspeak2
# Short-Description: TeamSpeak 2 server
# Description: Start and stop your TeamSpeak 2 server...
### END INIT INFO
# CONFIG SECTION
USER=teamspeak
DIR=/ts2server
# END OF CONFIG SECTION
case "$1" in
start)
if [ -e $DIR/tss2.pid ]; then
echo "tss2.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 "server_linux is not executable..."
echo "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=tss2.pid" &
cd $WD
else
echo "server_linux is not executable..."
exit 4
fi
else
echo "Could not find server_linux..."
exit 5
fi
fi
;;
stop)
if [ -e $DIR/tss2.pid ]; then
echo -n "Stopping the TeamSpeak 2 server..."
if ( kill -TERM `cat $DIR/tss2.pid` ); then
for c in $(seq 1 300); do
if [ -e $DIR/tss2.pid ]; then
echo -n "."
sleep 1
fi
done
fi
if [ -e $DIR/tss2.pid ]; then
echo "server does not shutdown cleanly..."
kill -KILL `cat $DIR/tss2.pid`
rm $DIR/tss2.pid
sleep 5
else
echo "done"
fi
else
echo "tss2.pid 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/tss2.pid ]; then
echo "The TeamSpeak 2 server is running."
exit 0
else
echo "The TeamSpeak 2 server is 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 "Following passwords were generated on $date"
echo "superadmin = \"$spass\""
echo "admin = \"$pass\""
else
echo "server.log not found..."
exit 1
fi
;;
*)
echo "Usage: $0 {start|stop|restart|status|passwords}"
exit 2
esac
exit 0Damit sollte es unter SuSe Linux funktionieren...
ja danke...
... aber was mach ich damit?
(sorry, ist für mich absolutes neuland)
Startscripte kommen (je nach Distribution) nach /etc/init.d und die Start/Stop-Symlinks werden in /etc/rcX.d gesetzt.
Wenn dir das nichts sagt solltest du dich mit der System 5 Initialisierung auseinandersetzen. (Google weiß es)
ähm ok, ich denke ich habs kapiert. das script in init.d und einen link in die rc3.d.
nur noch die frage, wie bekomm ich jetzt das script auf den server. hab ja nur kommandozeile.
könnt ihr ein gutes buch über linux empfehlen um hier mal ein wenig tiefer einzusteigen?
Für Anfänger kann ich das Programm WinSCP empfehlen:
http://winscp.net/eng/index.php
Das Linux-Buch von Kofler soll angeblich recht gut sein. Ein Kommilitone von mir schwört darauf.
Es heißt "Linux: Konfiguration, Anwendung und sonstnochwas was ich vergessen habe" :o
also wenn ich nun das script mit tssd start als root starte erhalte ich:
h657826:/etc/init.d # ./tssd start
!!!!!!!!!!!
Starting the Teamspeak 2 Server...
Could not find server_linux...
marcelrx
04-10-2005, 20:35
also wenn ich nun das script mit tssd start als root starte erhalte ich:
h657826:/etc/init.d # ./tssd start
!!!!!!!!!!!
Starting the Teamspeak 2 Server...
Could not find server_linux...
Richtiges TS-Verzeichnis angeben:
# CONFIG SECTION
USER=teamspeak
DIR=/ts2server
# END OF CONFIG SECTION
ok, habe ich geändert.
Wenn ich nun das Script mit ./tssd start aufrufe, wird der TS Server gestartet.
Um das ganze nun automatisch hinzubekommen, habe ich eine Datei (chmod 755) im Verzeichnis rc3.d angelegt:
S99tssd liegt in rc3.d und enthält: ../tssd start
Die Script Datei tssd liegt ein Verzeichnis höher in init.d.
Nach einem Reboot startet der Server nicht. Wenn ich ./S99tssd aufrufe, erhalte ich:
h657826:/etc/init.d/rc3.d # ./S99tssd
tss2.pid already exists...
Is your TeamSpeak 2 server already running?
ok, kommando zurück.
man sollte wissen, dass scripte aus rc3.d heraus bereits mit dem parameter start / stop versehen werden. War also doppelt parametriert, deshalb hats nicht getan.
Mit einem symbolischen Link in rc3.d tuts.
Bei genauem Hinsehen wäre dir sicherlich aufgefallen, dass das Script die Parameter start, stop, restart, status und passwords versteht...
blitziii
30-10-2005, 10:09
Ich hab das gleiche Problem wie mein Vorredner Wildsau aber leider noch keine Lösung gefunden. Linux startet also den Prozess nich automatisch und bei manuellen starten kommt dann:
[root@148124 rc3.d]# ./S15tss start
tss2.pid already exists...
Is your TeamSpeak 2 server already running?
den link habe ich mit "ln -s ../init.d/tssd S15tss" erstellt. Wo liegt mein Fehler??
MfG
Alex
Sieht so aus als wäre der Server doch gestartet, wenn nicht:
die tss2.pid löschen, falls sie noch existiert und neu booten.
blitziii
30-10-2005, 10:45
jetzt funzt es ... danke dir :)
blitziii
30-10-2005, 10:54
habe gerade mal getestet. das funktioniert nur, wenn ich vorher per hand die tss2.pid datei gelöscht hab. warum wird die nicht vom script automatisch gelöscht??
Die tss2.pid wird dann gelöscht, wenn der TeamSpeal-Daemon ORDNUNGSGEMÄSS herunterfährt, andererseits wird die tss2.pid nicht gelöscht.
blitziii
30-10-2005, 11:13
heißt dass im Klartext, dass ich der TeamSpeak Daemon nicht bei einem reboot -Befehl beendet wird? Muss ich erst per hand mit ./tssd stop den Prozess stoppen??
UPDATE:
ich hab mir das script nun so umprogrammiert, dass er die *.pid datei einfach löscht, wenn sie da ist. Nun gehts ... ist zwar nicht sinn der sache, aber egal :)
vBulletin® v3.7.0, Copyright ©2000-2008, Jelsoft Enterprises Ltd.