Как установить переменную среды при запуске в сценарии Upstart?

У нас есть специальное приложение-демон C ++, которое разветвляется один раз. Итак, мымы делали это в нашем сценарии Upstart на Ubuntu 12.04, и он отлично работает:

expect fork
exec /path/to/the/app

Однако теперь нам нужно передать аргумент нашему приложению, которое содержит количество процессоров на компьютере, на котором оно работает:

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

Наша первая попытка была такая:

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

Хотя это запускает наше приложение с правильным значением -t, Upstart отслеживает неправильное значение pid, яЯ предполагаю, потому что эти кошки, grep & wc командует все процессы запуска в exec перед нашим приложением.

Я тоже пробовал это, и даже это нея думаю, потому что установка env var запускает процесс? Upstart все еще отслеживает неправильный pid: я

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

Мы также пытались сделать это в разделе env, но, видимо, те, ктоt команды запуска:

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

Также пытался сделать это в предварительном запуске, но env vars там нене может быть значений в разделе exec:

pre-start
    NUM_CORES=32
end script

Любая идея, как правильно установить этот NUM_CORES, и все же заставить Upstart отследить правильный pid для нашего приложения, которое разветвляется?

Ответы на вопрос(3)

Ваш ответ на вопрос