Hallo, Am Thu, 01 Jul 2004, Kay Häusler schrieb:
Eine angenehme Nacht Dieter Kluenter, Hallo Liste,
Am Mittwoch, 30. Juni 2004 schrieb Dieter Kluenter:
wie kann ich ein Startscript unter einen anderen Benutzer starten? ich habe hier bei mir den Teamspeak Server eingerichtet, und in der Anleitung steht, dass man den Server unter einen anderen Benutzer starten soll
zur Zeit starte ich den Servr per Hand im Teamspeak Verzeichnis ist eine Datei teamspeak2-server_startscript
starten muss man es so "./teamspeak2-server_startscript start" und beenden so "./teamspeak2-server_startscript stop"
man su(1) richte dein Augenmerk auf die Variable -c
das hab ich gemacht, der Server startet auch hab es per Yast getestet, nur das Problem ist es steht ungefährt 10 Minuten "Teamspeak2 start"
was läuft da schief?
hier ist das Startscript, hab hier schon viel rumgetestet, ich komm hier nicht wirklich weiter :-/
Ich kann den Server per Yast starten, nur die Meldung steht da ziemlich lange, und den Server auch beenden, da geht es ohne Probleme
=============================================================================== #! /bin/bash # Copyright (c) 2004 TeamSpeak team All rights reserved. # # Author: pwk.linuxfan 2004 #
Fuege hier einen Header a ala /etc/init.d/skeleton ein (mit 'Provides: tss' z.B.). Requires musst du selbst rausfinden. Anschliessend fuegst du noch ein: ==== TSS="<PFAD>/server_linux" TSS_PID="/var/run/tss.pid" . /etc/rc.status rc_reset ====
case "$1" in start) if [ -e /home/tss/tsserver2.pid ]; then echo "tsserver2.pid already exists...server already started ?"; echo "If you are sure the server is not running, delete tsserver2.pid" exit 1 else
Ersetzen durch: ==== case "$1" in start) if test -e "$TSS_PID"; then echo "..." # wie oben rc_failed 1 rc_exit else ====
if [ "$UID" = "0" ]; then
[..] Das inkl. der if-Zeile loeschen.
echo "starting the teamspeak2 server" if [ -e /home/tss/server_linux ]; then if [ ! -x /home/tss/server_linux ]; then echo "server_linux is not executable, trying to set it" chmod u+x /home/tss/server_linux fi if [ -x /home/tss/server_linux ]; then su tss -c"/home/tss/server_linux -PID=tsserver2.pid" else echo "server_linux is not executable, fix this" exit 4 fi
Und dies ersetzen durch: echo "starting the teamspeak2 server" if test -e $TSS && test -x $TSS; then startproc -f "$TSS_PID" -u tss $TSS -PID="$TSS_PID ### evtl. -f $TSS_PID oder eher ### -PID="$TSS_PID" weglassen else echo "server_linux is not executable, fix this" rc_failed 4 rc_exit fi
fi ;; stop) if [ -e /home/tss/tsserver2.pid ]; then echo -n "stopping the teamspeak2 server" if ( kill -TERM `cat /home/tss/tsserver2.pid` ); then for c in $(seq 1 300); do if [ -e /home/tss/tsserver2.pid ]; then echo -n "." sleep 1 fi done fi if [ -e /home/tss/tsserver2.pid ]; then echo "server does not shutdown cleanly - killing" kill -KILL `cat /home/tss/tsserver2.pid` rm /home/tss/tsserver2.pid sleep 5 else echo "done" fi else echo "tsserver2.pid is missing, no started server ?" exit 7 fi ;;
Ersetzen durch: stop) if test -e "$TSS_PID"; then killproc -f "$TSS_PID" "$TSS" fi ### Evtl. auch durch ein "warten und testen und killen" zu ergaenzen. ;;
restart) $0 stop && $0 start || exit 1 ;;
Siehe /etc/init.d/skeleton
status) if [ -e /home/tss/tsserver2.pid ]; then echo "the server seems to be running" exit 0 else echo "the server seems to be stopped" exit 3 fi ;;
Ersetzen durch status) checkproc -f "$TSS_PID" "$TSS" rc_status -v ;; [zum Rest hab ich jetzt kein Bock mehr] -dnh -- 283: whoami Whoami ist nur was für Leute mit Alzheimer! (Begründung von Microsoft Deutschland für das Entfernen des Befehls aus Windows NT)