Ich versuche, upstart
den pydoc
Webserver für ein Paket, das ich entwickle, immer laufen zu lassen. Wenn ich ihn über die Befehlszeile ausführe:
pydoc -p 7464 /some_path/my_python_package
es funktioniert einwandfrei und wenn ich gehe, wird localhost:7464/my_python_package
die Dokumentation angezeigt. Wenn ich es jedoch in ein Upstart-Skript einfüge, z. B.
start on startup
start on runlevel [2,3,4,5]
stop on runlevel [0,1,6]
script
pydoc -p 7464 /some_path/my_python_package
end script
Wenn ich dann den Browser öffne, localhost:7464/my_python_package
erhalte ich Folgendes:
no Python documentation found for 'my_python_package'
Beachten Sie, dass localhost:7464
alle Standard-Python-Pakete wie gewohnt angezeigt werden. Es scheint also, als würde Upstart den Pfad nicht richtig analysieren.
Ich habe versucht, „putting export PYTHONPATH='/some_path'
in“ zu verwenden und die Ausführungszeile zu ändern, pydoc -p 7464 $PYTHONPATH/my_python_package
aber das hat auch nicht funktioniert.
Antwort1
Die Syntax, die Sie in diesem Job angegeben haben, ist falsch:
- Sie haben mehrere '
start on
' Strophen. - die letzte '
start on
'-Strophe wird berücksichtigt, aber Ihre ist aufgrund der Verwendung von Kommas zwischen den Runleveln ungültig (Ihr 'stop on
' ist aus demselben Grund ungültig).
Sie möchten so etwas:
start on runlevel [2345]
stop on runlevel [016]
script
pydoc -p 7464 /some_path/my_python_package
end script
Beachten Sie, dass mit Version 0.9.7 und höher von Upstart (also Ubuntu Natty oder neuer - siehehttps://wiki.ubuntu.com/NattyNarwhal/TechnicalOverviewUpstart), gibt es einen neuen Befehl, init-checkconf
der Ihr Skript auf Syntaxfehler überprüft. Die Verwendung ist einfach:
$ init-checkconf myjob.conf
Beachten Sie, dass Sie init-checkconf
als Ihr Benutzer (nichtWurzel).
Führen Sie dies außerdem als Systemjob aus (die Jobdatei befindet sich in /etc/init/ ?) Wenn ja, müssen Sie den Dienst wirklich als Root ausführen? Wenn nicht, siehe:
http://upstart.ubuntu.com/cookbook/#run-a-job-as-a-different-user
Wenn ja, müssen Sie diesen Dienst wirklich als Root-Benutzer ausführen?
Abschließend möchte ich Ihnen dringend empfehlen, einen Blick auf den Rest des Upstart-Kochbuchs zu werfen:
- HTML-Version:http://upstart.ubuntu.com/cookbook/
- PDF-Version:http://upstart.ubuntu.com/cookbook/upstart_cookbook.pdf