Probleme mit Autostart

Raphik1ng

New Member
Hi, ich möchte das mein Ts3, der im ordner /home/Server/Ts3 liegt beim reboot des Servers automatisch startet.
Hirzu habe ich das script teamspeak3 im Ordner /etc/init.d.
Code:
#!/bin/bash
#Teamspeak 3 startup script
##update-rc.d teamspeak3  defaults
### BEGIN INIT INFO
# Provides:          Teamspeak3
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts/stops the Teamspeak3 daemon
### END INIT INFO
PATH=/sbin:/bin:/usr/sbin:/usr/bin:$DIR

#Server options
NAME="TeamSpeak 3 Server"
DESC="tss3"
DIR="/home/Server/Ts3"   # pfad zum Teamspeak3 
BIN="ts3server_linux_amd64"   # name TS3server bin ; hier die 64bit


PIDFILE="/home/Server/Ts3/tss3.pid" # Pfad für fuer das pid.file
PARAMS="inifile=ts3server.ini"


USER="teamspeak" # User, unter dem TeamSpeak3 ausgeführt wird  - DO NOT USE root
GROUP="users" #  Gruppe für Teamspeak3 - DO NOT USE root

### Do not edit anything below this line ###

set -e
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:."
. /lib/lsb/init-functions


if [ ! -d "$DIR" ]; then
  log_failure_msg "Directory does not exist!"
  exit 0
fi

if [ ! -e "$DIR/$BIN" ]; then
  log_failure_msg "$BIN does not exist!"
  exit 0
fi

if [ ! -x "$DIR/$BIN" ]; then
  log_failure_msg "$BIN not executable!"
  exit 0
fi

if [ -z "$USER" ]; then
  log_failure_msg "Username is not set!"
  exit 0
fi

if [ -z "$GROUP" ]; then     
  log_failure_msg "GROUP is not set!"                                   
  exit 0
fi

TEST=`ps ax | grep $BIN | grep -v grep | wc -l`

start()
{
if [ $TEST = 1 ]; then
  log_begin_msg "$NAME already running with Pid: `tail $PIDFILE`"
else
  export LD_LIBRARY_PATH="${LIBRARYPATH}:${LD_LIBRARY_PATH}"
  log_progress_msg "Starting $NAME"
  start-stop-daemon --start --chdir $DIR --exec $DIR/$BIN --startas $BIN --make-pidfile --pidfile $PIDFILE --user $USER --group $GROUP --chuid $USER:$GROUP --background -- $PARAMS
  chown $USER:$GROUP $PIDFILE
  log_end_msg 0
fi
}

stop()
{
if [ ! $TEST = 1 ]; then
  log_begin_msg "$NAME not running!"
else
  log_progress_msg "Stopping $NAME"
  start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE --user $USER --exec $DIR/$BIN
  rm -rf $PIDFILE
  log_end_msg 0
fi
}

restart()
{
  echo "Stopping $NAME"
  start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE --user $USER --exec $DIR/$BIN
  rm -rf $PIDFILE
  sleep 1
  echo ...
  echo "Starting $NAME"
  start-stop-daemon --start --chdir $DIR --exec $DIR/$BIN --startas $BIN --make-pidfile --pidfile $PIDFILE --user $USER --group $GROUP --chuid $USER:$GROUP --background -- $PARAMS
  chown $USER:$GROUP $PIDFILE
}

status()
{
if [ $TEST = 1 ]; then
  echo "$NAME running with Pid: `tail $PIDFILE`"  
else  
  echo "$NAME not running"
fi 
}

case "$1" in
  start)
    start
    ;;

  stop)
    stop
    ;;

  restart|force-reload)
    restart
    ;;

  status)
    status
    ;;

  *)
    log_success_msg "Usage: $0 {start|stop|restart|force-reload|status}" >&2
    exit 1
    ;;
esac

exit 0
dann habe ich
Code:
chmod 755 /etc/init.d/teamspeak3
update-rc.d teamspeak3 defaults
eingegeben jedoch startet der Server nicht und lässt sich auch nicht manuell per /etc/init.d/teamspeak3 start starten der Status den man per
Code:
/etc/init.d/teamspeak3 status
erhält ändert sich sobalt man den Server im Servervezeichnis über das startscript startet.
Ich habe jetzt ein bischen herumexperimentiert und den versucht den Server über
Code:
/etc/init.d/teamspeak3 stop
zu stoppen, wenn ich jetzt
Code:
/etc/init.d/teamspeak3 status
eingebe bekomme ich folgende Meldung
Code:
tail: cannot open `/home/Server/Ts3/tss3.pid' for reading: No such file or directory
TeamSpeak 3 Server running with Pid:
wo liegt mein Fehler ?
 
Du könntest das, was das Script macht, mal manuell ausführen.
Der wichtigeste Eintrag dafür dürfte folgender sein:
Code:
start-stop-daemon --start --chdir $DIR --exec $DIR/$BIN --startas $BIN --make-pidfile --pidfile $PIDFILE --user $USER --group $GROUP --chuid $USER:$GROUP --background -- $PARAMS

Die Variablen natürlich entsprechend ersetzen.
Evtl. existiert start-stop-daemon bei dir nicht oder du hast einfach die falsche Datei gestartet. Ich kenne es sonst so, dass die ts3server_startscript.sh aufgerufen wird.
 
Was passiert, wenn du tail /home/Server/Ts3/tss3.pid eingibst? Kannst du eine Ausgabe von ls -al /home/Server und ls -al /home/Server/Ts3 posten?
 
@Jesaja Entschuldigung das verstehe ich nicht
Hier die Gewünschten Codes
Code:
root@v220111095626516:~# tail /home/Server/Ts3/tss3.pid
tail: cannot open `/home/Server/Ts3/tss3.pid' for reading: No such file or directory
die ls erzeugen keine Ausgabe
 
Der Fehlermeldung nach zu urteilen, ist das Script nach dem Befehl hier:
Code:
TEST=`ps ax | grep $BIN | grep -v grep | wc -l`
der Meinung, dass der TS3-Server läuft. Offensichtlich sind die Pfadangaben zum pid-File falsch.

Schau mal unter den Prozessen nach ob da nicht noch irgendwo was hängt und schieß' es ggf. ab. Dann starte den Server mal manuell aus seinem Home-Verzeichnis mit dem minimalen TS3-Startscript und schau mal, wo die pid aufschlägt und wie diese genau heißt.

Schau auch bitte nochmal bzgl. der Verzeichnisnamen genau nach (inkl. Groß- und Kleinschreibung) - das sollte 1:1 mit den Angaben im Start-Script übereinstimmen. Das die ls'e keine Ausgaben erzeugen klingt verdächtig nach Typo-Fehler.
 
ls -al /home/ ?
Code:
root@v220111095626516:~# ls -al /home/
total 16
drwxr-xr-x  4 root root    4096 Jan  4 16:49 .
drwxr-xr-x 20 root root    4096 Jan  4 17:17 ..
drwxr-xr-x  4 root root    4096 Jan  4 16:46 Server
drwxr-xr-x  2 ftp  nogroup 4096 Oct 31 16:22 ftp
root@v220111095626516:~#
@TerraX Ok werde ich mal machen wenn der Server leer ist.
 
@PCFreund: Dann läuft der TeamSpeak3 Server als Root.

@TerraX: Das von Raphik1ng erzeugt unabhängig vom TeamSpeak3 Server das "pidfile". Auszug aus dem Startscript:
Code:
start-stop-daemon --start --chdir $DIR --exec $DIR/$BIN --startas $BIN --make-pidfile --pidfile $PIDFILE --user $USER --group $GROUP --chuid $USER:$GROUP --background -- $PARAMS

@Raphik1ng: Der Ordner "Server" existiert. Kannst du bitte nochmal ls -al /home/Server ausführen? In dem Ordner Server müsste ja der Ordner Ts3 vorhanden sein. Kannst du auch die Ausgabe von ps ax | grep "ts3server*" posten?
 
Um Ehrlich zu sein leuft im Moment noch alles im Root.
@bibabu jetzt ging es
Code:
root@v220111095626516:~# ls -al /home/Server
total 16
drwxr-xr-x  4 root      root 4096 Jan  4 16:46 .
drwxr-xr-x  4 root      root 4096 Jan  4 16:49 ..
drwxr-xr-x 11 root      root 4096 Jan  4 22:37 Minecraft
drwxr-xr-x  8 teamspeak root 4096 Jan  5 15:51 Ts3
root@v220111095626516:~# ls -al /home/Server/Ts3/
total 6808
drwxr-xr-x 8 teamspeak root    4096 Jan  5 15:51 .
drwxr-xr-x 4 root      root    4096 Jan  4 16:46 ..
-rw-r--r-- 1 root      root   33571 Jan  4 16:47 CHANGELOG
-rw-r--r-- 1 root      root   24099 Jan  4 16:47 LICENSE
drwxr-xr-x 2 root      root    4096 Jan  4 16:47 doc
drwx------ 3 root      root    4096 Jan  4 16:47 files
-rwxr-xr-x 1 root      root  216264 Jan  4 16:47 libts3db_mysql.so
-rwxr-xr-x 1 root      root 1055464 Jan  4 16:47 libts3db_sqlite3.so
-rw-r--r-- 1 root      root     888 Jan  4 16:47 licensekey.dat
drwx------ 2 root      root    4096 Jan  4 17:40 logs
-rw-r--r-- 1 root      root       1 Jan  4 16:47 query_ip_blacklist.txt
-rw-r--r-- 1 root      root      12 Jan  4 16:47 query_ip_whitelist.txt
-rw-r--r-- 1 root      root     112 Jan  4 16:47 serverkey.dat
drwxr-xr-x 2 root      root    4096 Jan  4 16:47 serverquerydocs
drwxr-xr-x 4 root      root    4096 Jan  4 16:47 sql
-rw-r--r-- 1 root      root       6 Jan  4 17:40 ts3server.pid
-rw-r--r-- 1 root      root  307200 Jan  5 15:51 ts3server.sqlitedb
-rwxr-xr-x 1 root      root 5266920 Jan  4 16:47 ts3server_linux_amd64
-rwxr-xr-x 1 root      root     432 Jan  4 16:47 ts3server_minimal_runscript.sh
-rwxr-xr-x 1 root      root    2842 Jan  4 16:47 ts3server_startscript.sh
drwxr-xr-x 2 root      root    4096 Jan  4 16:47 tsdns
root@v220111095626516:~#
 
Wieso machst du es nicht via Cron? So mache ich es jedenfalls

crontab -e

@reboot USER cd /home/ts3 && sh ts3server_startscript.sh start


Fertig:D
 
Die Lösung per Cron ist auch in Ordnung. Ich finde aber, dass ein Startscript einfach schöner ist.

Läuft der TeamSpeak3 Server? Bitte Auszug von "ps aux | grep ts3server_linux_amd64" posten.

Im Moment gehören alle Dateien dem Benutzer root und der Gruppe root. Per "chown -R teamspeak:users /home/Server/Ts3/" kannst du die Rechte korrigieren. Ist der Benutzer "teamspeak" in der Gruppe "users"? Du kannst das testen indem du per "su teamspeak" in den Benutzer teamspeak wechselst und per "touch abc.txt" eine Datei anlegst. "ls -al abc.txt" zeigt dir dann den Benutzer sowie die Gruppe. (Achtung: mit su ändert sich nicht automatisch dein aktuelles Verzeichniss. Wenn du im Ordner /root/ bist und dann su teamspeak ausführst, dann bist du immernoch im Ordner /root/ und kannst dort als Benutzer teamspeak keine Datei anlagen. Ein einfaches "cd" bringt dich in deinen Hauptordner. Ist die Gruppe "users", dann passt alles. Wenn nicht kannst du per "usermod -g users teamspeak" den Benutzer zur Gruppe hinzufügen.

So siehst die Ausgabe von ps aux | grep ts3 bei mir aus. In der ersten Spalte steht der Benutzer. Der heißt bei mir auch teamspeak, ist aber zu lang und daher wird die ID angezeigt. Die zweite Spalte ist die Prozess ID (auch PID) genannt. Mit dieser kannst du den Prozess beenden (das Startscript erledigt dies normalerweiße automatisch).

Code:
ps aux | grep ts3
2002      3766  2.5  0.5  91548 43968 ?        Sl    2011 2106:06 ./ts3server_linux_x86 inifile=ts3server.ini
root     27707  0.0  0.0   1712   512 pts/0    S+   19:50   0:00 grep ts3

kill PID beendet also den TeamSpeak Server. Dann korrigierst du, solltest du es noch nicht getan haben, Rechte, Benutzer und Gruppe. Und jetzt führst du erneut das Startscript aus.

Wenn es nicht funktioniert, dann gib uns die Fehlermeldung, ein erneutes ls -al /home/Server/Ts3 und ein tail /home/Server/Ts3/tss3.pid. Wenn alles klappt, kannst du ja noch kurz Danke sagen ;-)
 
Code:
root@v220111095626516:/home/Server/Ts3# ps aux | grep ts3server_linux_amd64
root      2878  0.5  0.2 201096  8432 ?        Sl   15:22   1:35 ./ts3server_linux_amd64
root     30745  0.0  0.0   6076   568 pts/5    S+   20:13   0:00 grep ts3server_linux_amd64
Danke schonmal den rest teste ich gerade
 
danke jetzt geht es aber ich bekomm im vservercontrolpanel eine komische meldung:
Code:
 Starting TeamSpeak 3 Serverchown: cannot access `/home/Server/Ts3/tss3.pid': No such file or directory
startpar: service(s) returned failure: teamspeak3 ... failed!
ist diese wichtig ?
und nochmal DANKE !!
 
Back
Top