Задача экземпляра Upstart при перезагрузке системы

Я использую upstart экземпляры, чтобы начать несколько моих сервисов. Задания должны иметь один экземпляр для каждого пользователя, так как они принимают имя пользователя в качестве параметра экземпляра. Я также настроил их, чтобы они возрождались выскочкой. Регенерирующие работы. Вот как выглядит мой конфигурационный файл

start on runlevel [2345]
stop on runlevel [06]

normal exit 0

respawn
respawn limit 5 300
instance $user

chdir /home/talha/syncservice/
script
   exec python sync.py $user
end script

. Проблема в том, что я хочу, чтобы эти задания экземпляра перезапускались при перезагрузке системы. Очевидно, что я не могу передать все имена пользователей в качестве параметров экземпляра при перезагрузке, поскольку я не знаю, что и сколько экземпляров было создано в прошлый раз.

Есть ли способ, чтобы выскочка могла сохранять свои таблицы состояний для экземпляров экземпляров при перезагрузках. Почему я предполагаю, что есть некоторая «таблица состояний» ?, потому что я предполагаю, что выскочка ведет отслеживание всех выполняемых заданий экземпляра. Будет таблица состояний, которая отслеживает, какой экземпляр будет респаун, когда он сработает. В противном случае он не сможет возобновить работу экземпляра. Поэтому, если эти таблицы могут быть устойчивыми при перезагрузках, моя проблема будет решена.

Могут ли сохраняться настойчивость? Где выскочка отслеживает свои рабочие места? Это только в памяти или файле?

Если это невозможно сделать, это означает, что строфа

start on runlevel[2345]

не имеет смысла или преимуществ для заданий экземпляра.

1
задан 4 February 2014 в 13:00

1 ответ

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

В разделе «Поваренная книга» на строфе экземпляра есть пример того, как делать такие вещи. Я делаю что-то подобное с несколькими экземплярами PostgreSQL; см. этот ответ.

Основная идея здесь состоит в том, чтобы создать то, что я называю заданием «pony engine», которое запускает все ваши задания экземпляра. В вашем случае вы можете пропустить его через подкаталоги /home или сохранить отдельный файл conf, в котором перечислены пользователи, для которых вы хотите запустить службу. Для каждого пользователя запускается экземпляр sync.py.

Вы правы, что start on / stop on бесполезно в задании экземпляра. Переместите его в задание «pony engine».

К сожалению, у меня нет доступа к ящику Linux прямо сейчас, но см. Вышеупомянутый ответ для примеров.

1
ответ дан 24 May 2018 в 12:11

Другие вопросы по тегам:

Похожие вопросы: