Таким образом, я работаю над новомодным процессом и требуемый, чтобы знать, мог ли я передать в нескольких параметрах
my-upstart-service restart PARM1=foo PARM2=bar PARM3=hello
Вот отчасти, что я имел в виду
description "Multi Parm"
env USER=BLARG
start on startup
stop on shutdown
respawn
instance $PARM1
instance $PARM2
instance $PARM3
env P1=${PARM1}
env P2=${PARM2}
env P3=${PARM3}
script
exec sudo -u $USER sh -c "$P1/$P2/$P3.sh"
end script
Я могу сделать что-то вроде этого?
Да, возможно, определяют несколько env
переменная и, чем переопределяет их из командной строки.
Например:
description "Multi Parm"
env USER=BLARG
start on startup
stop on shutdown
env PARM1=foo
env PARM2=bar
env PARM3=hello
script
exec sudo -u $USER sh -c "/$PARM1/$USER/PARM2/$PARM3.sh"
end script
Чем Вы может запустить Ваш сервис:
initctl start your-service PARM1=home PARM2=bin PARM3=yourScript
Неясно для меня, как Вы использовали бы строку файла конфигурации экземпляра. Если необходимо запустить несколько экземпляр задания, Вы могли бы изменить этот пример:
description "Multi Parm"
env USER=BLARG
start on startup
stop on shutdown
respawn
instance $PARM1
script
exec sudo -u $USER sh -c "/home/$USER/bin/$PARM1.sh"
end script
Таким образом, можно выполнить его многократно с другим значением $PARM1:
initctl start your-service PARM1=my-first-script
initctl start your-service PARM1=my-second-script
Смотрите на 6.15.2 Других Примеров Экземпляра существует пример о том, как определить a worker
задание и как выполнить его многократно более другой экземпляр от workers
задание.
ОБНОВЛЕНИЕ Здесь является примером, протестированным на lubuntu 12.04.
Сначала определите simpleInstanceJob.conf
задание, которое просто запускает Ваш скрипт с данными параметрами. Это - задание без start on
и stop on
строка файла конфигурации, таким образом, это не, запускает/заходит выскочку init процесс.
# SimpleInstanceJob -
#
# This service runs for ever and print number and arguments
description "Run single job instance"
instance $ENVIRONMENT/$DRIVER/$ALGORITHM
console log
respawn
script
exec python /home/caterina/tmp/upstart/test.py $ENVIRONMENT $DRIVER $ALGORITHM
end script
Вставьте его /etc/init
и протестируйте его с:
sudo start simpleInstanceJob ENVIRONMENT=foo DRIVER=bar ALGORITHM=fooBar
Использовать initctl
просмотреть задание состояния:
initctl list | grep simpleInstanceJob
это произведет:
simpleInstanceJob (foo/bar/fooBar) start/running, process 3828
и test.py
вывод будет сохранен в /var/log/upstart/simpleInstanceJob-foo_bar_fooBar.log
Использование:
sudo stop simpleInstanceJob ENVIRONMENT=foo DRIVER=bar ALGORITHM=fooBar
остановиться/уничтожить"foo/bar/fooBar
"экземпляр simpleInstanceJob
.
Чтобы к выполнениям несколько инстанцируют simpleInstanceJob
, создайте a launcherJobs.conf
:
# laucherJobs -
#
# This service runs three instance of simpleInstanceJob
# starts on runlevel.
description "laucherJobs"
start on runlevel [2345]
stop on runlevel [016]
console log
pre-start script
start simpleInstanceJob ENVIRONMENT=foo DRIVER=bar ALGORITHM=fooBar
start simpleInstanceJob ENVIRONMENT=foo1 DRIVER=bar1 ALGORITHM=fooBar1
start simpleInstanceJob ENVIRONMENT=foo2 DRIVER=bar2 ALGORITHM=fooBar2
end script
post-stop script
for inst in `initctl list|grep "^simpleInstanceJob "|awk '{print $2}'|tr -d ')'|tr -d '('`
do
environment=`echo $inst | awk -F "/" '{print $1}'`
driver=`echo $inst | awk -F "/" '{print $2}'`
algorithm=`echo $inst | awk -F "/" '{print $3}'`
stop simpleInstanceJob ENVIRONMENT=$environment DRIVER=$driver ALGORITHM=$algorithm
done
end script
Это "основное" задание не имеет никакого основного должностного лица или раздела сценария, оно будет работать (без pid) в течение какого-то времени что "ведомое устройство" или дети (отдельный "simpleInstanceJob") выполненные экземпляры задания.
Вставьте его /etc/init
и протестируйте его с:
sudo start laucherJobs
Это запустит три экземпляра simpleInstanceJob:
initctl list | grep Job
произведет:
simpleInstanceJob (foo/bar/fooBar) start/running, process 3745
simpleInstanceJob (foo2/bar2/fooBar2) start/running, process 3749
simpleInstanceJob (foo1/bar1/fooBar1) start/running, process 3747
launcherJobs start/running
Наконец остановить весь процесс:
sudo stop laucherJobs
Надежда это полезно для решения проблемы.
Можно сделать это:
start on startup
stop on runlevel [016]
instance $PARM1/$PARM2/$PARM3
setuid BLARG
respawn
exec ${UPSTART_INSTANCE}.sh