Como definir a variável de ambiente no pré-início no script Upstart?

Nós temos um aplicativo daemon C ++ customizado que se bifurca uma vez. Então, estamos fazendo isso no nosso script Upstart no Ubuntu 12.04 e funciona perfeitamente:

expect fork
exec /path/to/the/app

No entanto, agora precisamos passar em um argumento para o nosso aplicativo que contém o número de CPUs na máquina em que ele é executado:

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

Nossa primeira tentativa foi essa:

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

Enquanto isso inicia nosso aplicativo com o valor -t correto, o Upstart rastreia o valor pid incorreto, estou assumindo porque os grupos cat, grep & wc comandam todos os processos de inicialização em exec antes do nosso aplicativo.

Eu também tentei isso, e nem isso funciona, eu acho, porque configurar um env var executa um processo? O Upstart ainda rastreia o pid errado:

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

Eu também tentei fazer isso em uma estrofe env, mas aparentemente eles não executam comandos:

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

Também tentei fazer isso no pré-início, mas env vars set não tem nenhum valor na sub-rotina exec:

pre-start
    NUM_CORES=32
end script

Alguma ideia de como definir NUM_CORES corretamente, e ainda obter o Upstart para rastrear o pid correto do nosso aplicativo que se bifurca uma vez?

questionAnswers(3)

yourAnswerToTheQuestion