У меня есть демон в / 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
При добавлении возможности демонизировать вашу службу, если это вообще возможно, убедитесь, что он не разветвляется, пока он не будет готов обрабатывать запросы, тогда `` ожидайте вилку '' должным образом задержит условие `` запущено '', иначе вам все равно понадобится этот пост -Начало.