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: