Upstart - запуск после завершения задачи

У меня задание Upstart, настроенное с использованием раздела task, от которого зависит другое задание до его запуска. Однако это задание также должно ожидать запуска другой службы перед ее запуском. Это вызывает некоторые проблемы - задание запускается, если задание завершается до начала зависимого задания, но не запускается, если задание завершается после запуска задания.

Например, пусть task-a будет задачей, от которой зависит задание, тогда это файл конфигурации задания:

start on (stopped task-a and started cups)

script
    echo do stuff
end script

Как я могу получить задание, подобное приведенному выше, для запуска после задание завершено , но после начала другого задания? Я могу изменить задачу, если это необходимо, но я не думаю, что спать вечно - это очень хорошее решение. Версия Ubuntu в этом случае - 12.04.

1
задан 15 October 2013 в 20:27

2 ответа

У меня было бы первое задание, «излучающее» свой собственный сигнал (это команда):

initctl emit job-a-done

И прыгнул на это в моей выскочившей работе ...

start on started cups and job-a-done

Это изложено в кулинарной книге .

0
ответ дан 15 October 2013 в 20:27

Хорошо, поэтому после большой проблемы, пытающейся заставить это работать, я сдался. Я попробовал:

  1. Заставляя задание запуститься после того, как одно задание запускается, и другой остановился (задача)

    start on (started cups and stopped my-task)
    
  2. Заставляя задание запуститься после того, как одно задание запускается, и другой испустил сигнал (см. ответ Oli),

    start on (started cups and my-task-finished)
    
  3. Заставляя задание запуститься после того, как оба задания запустились (задание задачи ожидает бесконечно),

    start on (started cups and started my-task)
    

Ни одна из вышеупомянутых попыток не работала. Для ссылки я хотел иметь задание, запускаются, после того как CUPS запускается, и моя задача закончилась. Когда CUPS настроили принтеры, он будет медленно запускаться, и сценарий работал бы правильно (в случаях 1 и 3, 2 никогда не работал правильно). Однако то, когда CUPS не имел никаких принтеров, настроило его, запустится немедленно (я имею в виду, Выскочка WTF, почему это происходит во-первых?), но что еще более важно мое задание не работало бы.

Я пришел к выводу, что Выскочка в Ubuntu 12.04 LTS полностью повреждается. Я не уверен, является ли это ошибкой, которая исправлена в более новой версии Ubuntu, но это - довольно основная проблема.

Так, решение. Не используйте Выскочку. Переключитесь на systemd, если возможный или используют SysV в случаях, где это не доступно/не жизнеспособный для поддержания. О, и Канонический, зафиксируйте это.

0
ответ дан 15 October 2013 в 20:27

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

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