[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: start-stop-daemon und python



Hallo Sebastian,

Sebastian Dellit wrote:
> Hallo Andreas und Leser und Leserinnen,
> 
> am Samstag, 22. September 2007 um 11:41 meinte Andreas Pakulat u. a.:
>> On 22.09.07 11:06:00, Sebastian Dellit wrote:
>>> am Samstag, 22. September 2007 um 10:37 meinte Andreas Pakulat u. a.:
>>> > Das der Prozess im Hintergrund gestartet wird. Besser als sowas ist
>>> > aber start-stop-daemon zu benutzen (im Paket dpkg enthalten)
>>> 
>>> Darauf wieß ich ja in meinem Posting hin, ich habe mir die Vorlage
>>> "skeleton" angeschaut, die ja IMHO genau dafür gedacht ist.
> 
>> Ich hab den Rest des Threads nicht verfolgt, nur durch Zufall mal
>> reingeschaut :)
> 
> Das dachte ich mir, ist auch nur so "dahergebrabbelt" gewesen. :-)
> 
>>> Nur leider
>>> bekomme ich es nicht hin, das es mit dem python Script läuft. Wenn ich
>>> das Script starte, dann werden die Dateien, welche direkt durch
>>> die python Datei aufgerufen werden, nicht gefunden. Ich kann gerne mal meinen
>>> Versuch hier posten, wenn das hilft.
> 
>> Du solltest beachten das init-Skripte nicht unbedingt diesselbe Umgebung
>> haben wie normale User. Insbesondere enthaelt PATH nur /bin und
>> /usr/bin, sowie evtl. /sbin und /usr/sbin. Wenn du in deinem Skript also
>> Programme aufrufst, solltest du dies mit absoluten Pfaden machen.
>> Ansonsten poste doch mal das Python Skript (falls es nicht zu lang ist)
>> und dein init-Skript ebenfalls.
> 
> Ich probiere es gerade mit einem anderen GameServer, bei dem ich aber
> auf das selbe Problem stoße. Ich versuche es mal zu erklären.
> 
> 1. Die Anpassung in der skeleton (zu audioquake kopiert) sehen wie
> folgt aus:
> 
> PATH=/sbin:/usr/sbin:/bin:/usr/bin
> DESC="AudioQuake Server"
> NAME=start
       ^^^^^
ich denke mal, dass das Programm, welches Du starten willst, nicht
wirklich start heisst, oder?

> DAEMON=/home/gs/audioquake/$NAME
> [ab hier alles original]
> DAEMON_ARGS="--options args"
> PIDFILE=/var/run/$NAME.pid
> SCRIPTNAME=/etc/init.d/$NAME
                         ^^^^^
Ausserdem hast Du weiter oben geschrieben, dass Dein Script audioquake
heisst, hier setzt Du aber $NAME ein, wo start drinsteht, also wird
versucht, /etc/init.d/start aufzurufen.

> 2. Nun die Datei, welche aufgerufen wird:
> 
> #!/bin/sh
> DIR=/home/gs/audioquake
> NAME=start
> $PATH/$NAME +gamedir $PATH/id1 -heapsize 32000
  ^^^^^                ^^^^^
ist eine Shellinterne Variable. Wenn Du sie so wie hier verwendest,
erhälst Du genau das Ergebnis, welches unten als Fehler gemeldet wird,
da der Aufruf dann so lautet: "/sbin:/usr/sbin:/bin:/usr/bin/start"
und das geht so nicht.
Die Variable PATH setzt man, um die Suchpfade, unter welchen ein
Programm gesucht werden soll, festzulegen.

> 3. Beim Versuch, den Server zu starten:
> 
> # audioquake start
> /home/gs/audioquake/start: line 4: /sbin:/usr/sbin:/bin:/usr/bin/start: Datei oder Verzeichnis nicht gefunden
> 
> Irgendwas scheint es also mit $PATH im init Script zu tun haben, nur
> was? Ich habe dort mal versucht, auch den Pfad einzufügen, in dem der
> Server läuft, jedoch nützt das nichts. Wenn ich $PATH im init Script
> leere und nur mit dem Pfad für den Server füttere, geht es auch nicht.
> Zusätzlich findet er dann andere dateien nicht. Vermutlich braucht er
> /bin und /sbin eben, um die anderen Dateien zu finden.
> 
> Oder muss ich an dieser Stelle eine ähnliche Zuweisung machen wie
> /bin:/usr/bin? Also z. B. /audioquake:/home/gs/audioquake
> 
> Wahrscheinlich ist es ein total leicht zu lösendes Problem, wenn man
> es weiß. :-)

hth
Reinhold



Reply to: