Upstart скрипт и старт-стоп-демон

У меня была проблема, из-за которой при создании сценария upstart этот сценарий вызывался несколько раз, в результате чего мой IRCd появлялся примерно 8 раз или около того. Чтобы исправить это, я использовал start-stop-daemon:

description "IRC Daemon Upstart Script"

start on startup
start on runlevel [2345]
stop on runlevel [016]

respawn

nice -5

exec start-stop-daemon --start --chuid ircuser --chdir /home/ircuser/inspircd/run --exec /home/ircuser/inspircd/run/bin/inspircd -- --config=/home/ircuser/inspircd/run/conf/inspircd.conf

Это работает точно так, как я хочу, за исключением того, что:

stop ircd

говорит, что останавливает это, но inspircd все еще работает после этого.

Есть ли лучший способ, чем использовать start-stop-daemon, который не дает сценарию открывать 8 экземпляров, или есть какой-то способ сделать его совместимым с start-stop-daemon?

8
задан 21 December 2011 в 19:59

1 ответ

Я не могу быть полностью уверен, но inspircd, возможно, выберет способ, когда он запускается, так что Upstart не знает, где его PID на самом деле. Если это так, то это можно исправить, поскольку в Upstart есть две строфы для обработки процессов разветвления:

  • expect fork перехватывает процессы, которые разветвляются один раз (imo, скорее всего, здесь).
  • expect daemon ловит то, что раскладывается дважды ... Что это может делать.

Так попробуйте это:

description "IRC Daemon Upstart Script"

start on startup
start on runlevel [2345]
stop on runlevel [016]

respawn
expect fork

nice -5

exec su bash -c "cd /home/ircuser/inspircd/run; /home/ircuser/inspircd/run/bin/inspircd -- --config=./conf/inspircd.conf" ircuser

И если это не сработает, проверьте мое su -статист, чтобы убедиться, что оно работает из командной строки, а затем измените expect fork на expect daemon и еще раз поверните его.


Отредактируйте оболочку bash, это может принести больше вреда, чем пользы. Это может быть лучшим исполнителем:

exec sudo -u ircuser /home/ircuser/inspircd/run/bin/inspircd -- --config=/home/ircuser/inspircd/run/conf/inspircd.conf
0
ответ дан 21 December 2011 в 19:59

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

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