Teamspeak und Cron

Bash, Shell, PHP, Python, Perl, CGI
olimlad
Posts: 9
Joined: 2005-04-08 11:57

Teamspeak und Cron

Post by olimlad »

Hallo,

ich habe auf meinem Server (Debian) dem TS Server installiert und alles läuft wunderbar.
Ich möchte nun im Crontab ablegen das der Benutzer xyz den Server bei jedem Neustart automatisch startet.

da muss man ja folgendes machen mit dem Benutzer xyz:

Code: Select all

crontab -e
und die Zeile:

Code: Select all

@reboot /home/xyz/tsserver/ts_linux

weiß leider net den Dateinamen im Kopf.
Meine Frage nun wenn der Server bei Reboot startet kann ich leider den Server mit dem Benutzer xyz nicht beenden oder restarten. Woran liegt das?

MFG

oli
aubergine
Posts: 471
Joined: 2005-09-10 17:52
Location: Frankfurt am Main

Re: Teamspeak und Cron

Post by aubergine »

Code: Select all

@reboot rm /home/xyz/tsserver/teamspeak-server.pid && /home/xyz/tsserver/ts_linux start
Sowas in der Art..

Kurz gesagt es liegt daran das bei einem "unsauberen" Beenden des Teamspeak Servers durch einen reboot, die dazugehörige .pid Datei nicht gelöscht wird und sich dadurch keine neue Instanz von ts2 starten lässt.
oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim

Re: Teamspeak und Cron

Post by oxygen »

cron ist ungeeignet für soetwas.

Zum starten/beenden von Diensten benutzt man die init.d Scripts.
olimlad
Posts: 9
Joined: 2005-04-08 11:57

Re: Teamspeak und Cron

Post by olimlad »

wieso ist cron ungeeigenet dafür?

Die PID ist immer weg auch wenn der Server mit einem reset neu gestartet wird.
Mein Problem ist wenn der Server hochgefahren ist und der TS-Server läuft, dann kann ich mit dem Benutzer xyz den Server nicht neustarten oder beenden.
Normal muss doch eine PID-Datei im Ordner liegen wenn der TS-Server läuft, was aber nicht der Fall ist. Wenn der TS-Server läuft kann mein Benutzer xyz nicht auf den Prozess zugreiffen als ob er die Rechte net hat.

Wie kann man das lösen?
oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim

Re: Teamspeak und Cron

Post by oxygen »

olimlad wrote:wieso ist cron ungeeigenet dafür?

....

Wie kann man das lösen?
Fällt dir was auf?
flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin

Re: Teamspeak und Cron

Post by flo »

Ohne Scripting wirst Du as Problem nicht lösen können ...

Wenn ts nicht läuft, und pid exitiert, schmeisse pid weg und starte ts, wenn ts danach nicht läuft, schreibe eine Mail.

Per Cron würde ich nur Dienst starten, die eine "verlassene" pid-Datei selber handeln können oder ein Shell-Script starten, das das übernimmt. Da bist Du aber an und für sich schon bei einem init-Script - eventuell gibt es das ja schon für ts?

flo.
aubergine
Posts: 471
Joined: 2005-09-10 17:52
Location: Frankfurt am Main

Re: Teamspeak und Cron

Post by aubergine »

TS hat schon ein Script mit an Board, jedoch musste man vor reboot des Servers an dieses script ein "stop" senden.
Ansonsten kann TS nach einem Restart nichtmehr mit der pid umgehen.

Sinnvoll wäre es in einem Reboot Script einfach die beiden Befehle auszuführen.

Im übrigen kann es nicht sein das dein TS Server läuft aber keine pid für diesen existiert.
flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin

Re: Teamspeak und Cron

Post by flo »

aubergine wrote:TS hat schon ein Script mit an Board, jedoch musste man vor reboot des Servers an dieses script ein "stop" senden.
Ja, genau ... super Script :-)

Nochmal: Ein sauberes init-Script sollte wissen, wie es mit den verwaisten .pid-Dateien umzugehen hat - das ist scriptbar. Wenn ich mir allerdings das Ding ansehe, daß ich gerade im Netz gefunden habe, haben auch die Leute von Teamspeak keinerlei Ahnung, wie man so etwas schreibt.
aubergine wrote:Im übrigen kann es nicht sein das dein TS Server läuft aber keine pid für diesen existiert.
Davon hat keiner was gesagt ... es kann aber wohl auch mal sein, daß das Ding nicht hochkommt, oder? Und gehe ich recht in der Annahme, daß "man" das gerne wissen möchte?

BTW - mit pid meine ich das File, icht die pid selber, jeder Prozeß hat eine PID, darüber müssen wir nicht reden.

flo.
aubergine
Posts: 471
Joined: 2005-09-10 17:52
Location: Frankfurt am Main

Re: Teamspeak und Cron

Post by aubergine »

flo wrote:
Davon hat keiner was gesagt ... es kann aber wohl auch mal sein, daß das Ding nicht hochkommt, oder? Und gehe ich recht in der Annahme, daß "man" das gerne wissen möchte?

flo.
Natürlich möchte man das wissen, weil es soetwas eigentlich nicht gibt, außer man macht etwas falsch :-D

Und ich hoffe dir ist klar dies bezieht sich jetzt auf den Fragesteller und nicht auf dich :oops:
flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin

Re: Teamspeak und Cron

Post by flo »

Ich hab das Thema "initscript" und "starten/stoppen" ja mit Ventrilo durchgemacht - ein Kumpel hat mich darum gebeten, eins der Systeme für ihn zu installieren. Ventrilo war da noch das kleinere Übel, ich weiß nicht mehr, warum ich letztendlich Vetrilo genommen habe.

flo.
darkiop
Posts: 16
Joined: 2004-09-18 13:21

tss init script

Post by darkiop »

Ich habe vor einiger Zeit auch mal versucht ein Init-Script für Teamspeak auf Debian Sarge zu schreiben:

Code: Select all

#! /bin/sh
#   
    
set -e
    
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="Teamspeak-Server"
NAME=tss2_rc2
USER=tss
GROUP=nobody
PIDFILE=/var/run/$NAME.pid
DAEMON=/opt/tss2_rc2/server_linux
SCRIPTNAME=/etc/init.d/$NAME
IPTABLES=/sbin/iptables
    
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
    
#   
#   Function that starts the daemon/service.
# 
d_start() {
    start-stop-daemon --start --user $USER --quiet --pidfile $PIDFILE --make-pidfile --exec $DAEMON -c `id -u $USER` -u `id -u $USER` -g `id -g $GROUP`
}   
    
#   
#   Function that stops the daemon/service.
# 
d_stop() {
    start-stop-daemon --stop --user $USER --quiet --name $NAME --retry forever

#killall server_linux
}

#
#   Function that sends a SIGHUP to the daemon/service.
#
d_reload() {
    start-stop-daemon --stop --quiet --pidfile $PIDFILE 
        --name $NAME --signal 1
}

case "$1" in
  start)
    echo -n "Starting $DESC: $NAME"
    echo
    d_start
    echo -n "activate iptables for: $NAME"
    $IPTABLES -A INPUT -p udp --dport 8767 -m state --state NEW -j ACCEPT
    $IPTABLES -A INPUT -p tcp --dport 14534 -m state --state NEW -j ACCEPT
    $IPTABLES -A INPUT -p tcp --dport 51234 -m state --state NEW -j ACCEPT
    echo "."
    ;;
  stop)
    echo -n "Stopping $DESC: $NAME"
    d_stop
    echo "."
    echo -n "disable iptables Config for: $NAME"
    /etc/init.d/firewall restart
    #$IPTABLES -A INPUT -p udp --dport 8767 -j DROP
    #$IPTABLES -A INPUT -p tcp --dport 14534 -j DROP
    #$IPTABLES -A INPUT -p tcp --dport 51234 -j DROP
    echo "."
    ;;
  restart)
    echo -n "Restarting $DESC: $NAME"
    d_stop
    sleep 1
    d_start
    echo "."
    ;;
  *)
    echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
    exit 1
    ;;
esac

exit 0
Das Starten funktioniert wunderbar, allerdings bekomme ich beim beenden folgenden Meldung:

Code: Select all

/etc/init.d/tss stop 
Stopping Teamspeak-Server: tss2_rc2start-stop-daemon: --retry takes timeout, or schedule list of at least two items
Try `start-stop-daemon --help' for more information
Das Problem konnte ich leider noch nicht lösen.