Wir haben eine benutzerdefinierte C++ - Daemon-Anwendung, die einmal gabelt. Deshalb haben wir uns auf Ubuntu 12.04 tun dies in unserem Upstart-Skript, und es funktioniert perfekt:Wie setze ich die Umgebungsvariable im Vorstart im Upstart Script?
expect fork
exec /path/to/the/app
aber jetzt müssen wir in einem Argument zu unserer App zu übergeben, die die Anzahl der CPUs auf dem Computer enthält, auf dem es Läufe:
cat /proc/cpuinfo | grep processor | wc -l
unser erster Versuch war:
expect fork
exec /path/to/the/app -t `cat /proc/cpuinfo | grep processor | wc -l`
Während, dass unser App mit dem richtigen -t Wert beginnt, Upstart den falschen pid Wert verfolgt, gehe davon aus ich, weil jene Katze , grep & wc befiehlt alle Startprozesse in exec vor unserer App.
Ich habe das auch versucht, und sogar es funktioniert nicht, ich denke, weil die Einstellung einer env var einen Prozess ausführt? Upstart verfolgt noch die falsche pid:
expect fork
script
NUM_CORES=32
/path/to/the/app -t $NUM_CORES
end script
Ich habe auch dies in einer env Strophe versuchte dabei aber anscheinend Befehle diejenigen nicht laufen:
env num_cores=`cat /proc/cpuinfo | grep processor | wc -l`
auch versucht, dies in vor dem Start zu tun, aber env vars dort eingestellt hat keine Werte in der exec Strophe:
pre-start
NUM_CORES=32
end script
Jede Idee, wie man diese richtig eingestellt NUM_CORES, und immer noch Upstart die richtige pid für unsere App, die Gabeln einmal zu verfolgen?
super nützlich! Eine Sache: Ich denke, Sie müssen immer noch "exec/path/to/app" innerhalb des Skriptblocks verwenden, wenn Sie das vorher für das Pid-Tracking benötigten. Nachdem ich "exec" hinzugefügt hatte, funktionierte das wunderbar für mich. –
@ CodyA.Ray, das vollständig von dem Verzweigungsverhalten des Dienstes abhängt, der gestartet wird. In unserem Fall war 'expect daemon' möglicherweise angemessen. – mpm