Script Upstart e start-stop-daemon

8

Eu tive um problema em fazer um script inicial chamar o script várias vezes, fazendo com que meu IRCd gerasse cerca de 8 vezes mais ou menos. Para corrigir isso, usei 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

Isso funciona exatamente como eu quero, EXCETO que:

stop ircd

diz que ele pára, mas o inspircd ainda está funcionando depois.

Existe uma maneira melhor do que usar o daemon start-stop que impedirá que o script abra 8 instâncias, ou existe alguma maneira de torná-lo compatível com o daemon start-stop?

    
por Liam Dawson 21.12.2011 / 16:59

1 resposta

6

Eu não posso ter certeza, mas o inspircd pode estar se formando quando for rodado, então o Upstart não sabe onde o PID realmente é. Se for esse o caso, ele pode ser corrigido porque o Upstart tem duas estrofes para lidar com processos de bifurcação:

  • expect fork captura os processos que foram de uma vez (provavelmente, o caso aqui).
  • expect daemon pega coisas que desembolsam duas vezes ... O que isso pode estar fazendo.

Então tente isto:

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

E, se isso não funcionar, verifique minha su -exemissão para ter certeza de que funciona na linha de comando e, em seguida, altere expect fork para expect daemon e dê outro giro.

Editar o wrapper bash pode estar fazendo mais mal do que bem. Isso pode ser um melhor exec:

exec sudo -u ircuser /home/ircuser/inspircd/run/bin/inspircd -- --config=/home/ircuser/inspircd/run/conf/inspircd.conf
    
por Oli 21.12.2011 / 17:25

Tags