Подтвердить что ты не робот

Запуск нескольких экземпляров выскочки автоматически

Мы используем PHP gearman рабочих для запуска различных задач параллельно. Все работает отлично, и у меня есть глупая оболочка script, чтобы развернуть их, когда я хочу их. Будучи программистом (и, следовательно, ленивым), я хотел посмотреть, могу ли я перевернуть их с помощью выскочки script.

Я понял, как использовать строфу экземпляра, поэтому я мог бы запустить их с номером экземпляра:

description "Async insert workers"
author      "Mike Grunder"

env SCRIPT_PATH="/path/to/my/script"

instance $N

script
    php $SCRIPT_PATH/worker.php
end script

И это отлично работает, чтобы начать их так:

sudo start async-worker N=1
sudo start async-worker N=2

То, как я хочу использовать этих работников, состоит в том, чтобы развернуть некоторое количество из них (возможно, по одному на ядро ​​и т.д.), и я бы хотел сделать это при запуске. Чтобы быть ясным, мне не нужна выскочка script для определения количества ядер. Я рад просто сказать "сделать 8 экземпляров", но поэтому я хочу, чтобы несколько запусков. Есть ли способ использовать функцию "начать на" в выскочке script, чтобы сделать это автоматически?

Например, запустите экземпляр 1, 2, 3, 4? Затем, если они правильно завершат работу?

Я предполагаю, что я мог бы подключить это к init.d script, но мне было интересно, может ли upstart справиться с чем-то подобным, или если кто-то выяснил эту проблему.

Привет, ребята!

4b9b3361

Ответ 1

Что вам нужно, это задача начальной загрузки, которая запускается при запуске и выполняет итерации по всем рабочим рабочим заданиям, начиная с каждого.

#/etc/init/async-workers-all.conf

start on runlevel [2345]

task

env NUM_WORKERS=8

script
  for i in `seq 1 $NUM_WORKERS`
  do
    start async-worker N=$i
  done
end script

Ключ состоит в том, чтобы сделать это задачей, которая говорит выскочку, чтобы задача завершилась до того, как она испустила какие-либо события. См. http://upstart.ubuntu.com/cookbook/#task и http://upstart.ubuntu.com/cookbook/#instance