Upstart: запуск чего-то только один раз

Факт: если вы используете start on <event> для задания, ваша работа может выполняться каждый раз, когда происходит <event> . В выдержанной поваренной книге упоминаются два метода для запуска задания только один раз.

Первое логично для меня и включает в себя создание фиктивного запуска навсегда задания, которое запускается на <event> . Поскольку это фиктивное задание выполняется навсегда, а одно экземпляра, оно запускается только один раз, и вы можете использовать start on started <dummy-job> в своей фактической работе.

Второй метод выглядит намного проще: start on startup and <event> . Цель этого вопроса – понять, почему этот второй метод работает . Это связано с пониманием того, как on start обрабатываются события, усугубляемые and . Т.е., поскольку <event> встречается несколько раз, почему возникает смешанное событие только один раз? Может ли быть, что смешанное событие повторно запускается только после повторного startup обоих startup и <event> ? Я ищу подтверждение этого.

    Я поделюсь своими выводами, которые дают эмпирический ответ на мой вопрос.

    Я тестировал, используя 2 события, desktop-session-start и net-device-up и действительно кажется, что запущенный desktop-session-start and net-device-up запускаются только при каждом desktop-session-start and net-device-up каждого из событий.

    В частности, я получаю событие при первом входе в ubuntu после того, как сеть пришла (dhcp завершен). Тогда, если я переключаю сеть, я не получаю это событие. Аналогично, если я выхожу из системы / вхожу в систему, а сеть остается подключенной, я не получаю это событие. Я получаю его только в том случае, когда я вхожу в систему, и сетевое соединение было отключено с момента последнего запуска или аналогично, когда я вывожу интерфейс после того, как я вышел из системы, с момента последнего запуска.

    Выражение event-a and event-b истинно только после того, как были выпущены событие BOTH-a и event-b, и если ваше задание выполняется, то BOTH-события должны быть снова выбраны, чтобы они были истинными.