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

Выскочка, нет обратной связи, не удалось ли запустить

У меня есть демон в / opt / xyz / bin / xyz. К сожалению, он не может работать в фоновом режиме и не сможет этого сделать в течение следующих полугода. Моя проблема в следующем: Вход

service xyz start

просто возвращается

xyz start/running, process 23484

Всегда, даже когда он сразу выходит с кодом выхода 1. Моя конфигурация такова:

$ cat /etc/init/xyz.conf
description "XYZ"

start on started networking
stop on shutdown

exec /opt/xyz/bin/xyz

В остальном работает нормально. Upstart распознает, когда процесс уже запущен, остановка тоже работает нормально.

Какие-либо предложения?

Вам нужна пост-стартовая строфа, которая будет запрашивать службу о том, предоставляет ли она ту службу, которую, как ожидается, будет запускать. Так что-то вроде

post-start script
  for try in 1 2 3 4 5 ; do
    if xyzadmin --ping ; then
      exit 0
    fi
    sleep 1
  done
  logger -t xyz-upstart -p daemon.err "failed to start within $try seconds, aborting"
  exit 1
end script

При добавлении возможности демонизировать вашу службу, если это вообще возможно, убедитесь, что он не разветвляется, пока он не будет готов обрабатывать запросы, тогда `` ожидайте вилку '' должным образом задержит условие `` запущено '', иначе вам все равно понадобится этот пост -Начало.