Как установить переменную среды при запуске в сценарии 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 для нашего приложения, которое разветвляется?