¿Cómo establecer la variable de entorno en el inicio previo en el script Upstart?

Tenemos una aplicación de demonio C ++ personalizada que se bifurca una vez. Así que hemos estado haciendo esto en nuestro script Upstart en Ubuntu 12.04 y funciona perfectamente:

expect fork
exec /path/to/the/app

Sin embargo, ahora debemos pasar un argumento a nuestra aplicación que contiene el número de CPU en la máquina en la que se ejecuta:

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

Nuestro primer intento fue este:

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

Mientras eso inicia nuestra aplicación con el valor -t correcto, Upstart rastrea el valor pid incorrecto, supongo que porque cat, grep & wc ordena todos los procesos de inicio en exec antes de nuestra aplicación.

También probé esto, e incluso no funciona, supongo que porque configurar un env var ejecuta un proceso. Upstart todavía rastrea al pid incorrecto:

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

También he intentado hacer esto en una estrofa de env, pero al parecer esos no ejecutan comandos:

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

También intenté hacer esto en pre-inicio, pero las variables env enviadas allí no tienen ningún valor en la stanza exec:

pre-start
    NUM_CORES=32
end script

¿Alguna idea de cómo configurar este NUM_CORES correctamente, y aún así obtener Upstart para rastrear el pid correcto para nuestra aplicación que se bifurca una vez?

Respuestas a la pregunta(3)

Su respuesta a la pregunta