Wie legen Sie die Umgebungsvariable in der vor-start im Upstart-Skript?

Wir haben einen benutzerdefinierten C++ - daemon Anwendung, die Gabeln einmal. So machen wir das schon in unserem Upstart-Skript auf Ubuntu 12.04 und es funktioniert perfekt:

expect fork
exec /path/to/the/app

Aber jetzt müssen wir ein argument übergeben, um unsere app enthält die Anzahl der CPUs auf dem Computer auf dem es läuft:

cat /proc/cpuinfo | grep processor | wc -l

Unser Erster Versuch war dieser:

expect fork
exec /path/to/the/app -t `cat /proc/cpuinfo | grep processor | wc -l`

Während das startet unser app-mit dem richtigen -t-Wert, Upstart tracks die falsche pid-Wert, ich gehe davon aus, weil diejenigen, cat, grep & wc-Befehle alle launch-Prozesse in exec, bevor Sie unsere app.

Habe ich auch dies ausprobiert, und ist es nicht auch Arbeit, ich denke, weil die Einstellung einer env-var läuft ein Prozess? Upstart noch tracks die falsche pid:

expect fork
script
    NUM_CORES=32
    /path/to/the/app -t $NUM_CORES
end script

Ich habe auch versucht, dies zu tun in einer env Strophe aber anscheinend diejenigen, die nicht Befehle ausführen:

env num_cores=`cat /proc/cpuinfo | grep processor | wc -l`

Habe auch versucht dies zu tun, in pre-start, aber die env-vars setzen, es müssen nicht alle Werte in der exec Strophe:

pre-start
    NUM_CORES=32
end script

Irgendeine Idee, wie man diese NUM_CORES richtig eingestellt, und immer noch Upstart-track die richtige pid für unsere app, die Gabeln einmal?

InformationsquelleAutor Zach | 2012-09-26
Schreibe einen Kommentar