Назад | Перейти на главную страницу

Зачем использовать «стоп; exit 1 »в сценарии Upstart, а не просто« exit 1 »в случае ошибки?

Я поддерживаю сценарий Upstart (версия 0.6.5) и в pre-start script, есть тест для завершения службы, если предварительное условие не выполняется:

pre-start script
  if [ ! -f $REQUIRED_FILE ]; then
    echo "$REQUIRED_FILE does not exit" >> $LOG_FILE
    stop 
    exit 1
  fi
end script

Согласно csh/tcsh справочная документация, stop [jobIDs]:

приостановить текущие фоновые задания или фоновые задания, указанные в идентификаторах задания; это дополнение Ctrl-Z или приостановить.

Я не вижу в stop здесь, особенно в pre-start раздел, в котором служба еще не запущена (т.е. exec строфа).

Я что-то упустил? Или это stop здесь лишнее и ненужное?

С помощью stop внутри работы эквивалентно вызову sudo stop <job-name>. Это может быть использовано, если вы хотите отключить respawnокончание работы.

В документации для новичков в разделе о предварительном запуске есть пример, объясняющий это использование:

http://upstart.ubuntu.com/cookbook/#pre-start

Другой вариант - отменить запуск задания по какой-либо причине. Одна из веских причин заключается в том, что из конфигурации системы ясно, что служба не нужна:

pre-start script
  if ! grep -q 'parent=foo' /etc/bar.conf ; then
    stop ; exit 0
  fi
end script