O daemon Upstart trabalha com três modos de daemon: no expect
, expect fork
, expect daemon
, 6.13.5 Implicações da Especificação errada esperam
Como você pode ver lá, você precisa verificar a contagem do processo.
Se você inserir expect fork
, o processo "exec /home/ec2-user/poxa/rel/poxa/bin/poxa start"
precisará fork
once e exit
. Também precisa de fork
duas vezes e exit
para expect daemon
. O iniciante será trace
desse último filho pid.
Para executar o daemon corretamente com o script upstart, você precisa verificar o fork
de poxa
process.
A seguir, meu exemplo para daemon upstart e simples.
script upstart em /etc/init
# egservice - eg daemon
#
# This is an example
# upstart script.
description "egservice"
start on runlevel [2345]
stop on runlevel [!2345]
#LOOK Following line, So egdaemon needs to fork just once.
expect fork
respawn
exec /sbin/egdaemon
egdaemon.c
para /sbin/egdaemon
#include <stdio.h>
int main()
{
/* LOOK following line, just once fork and main does not wait child and die,
so new child will be changed to a init's child and also a daemon. */
int pid = fork();
if (pid == 0) {
while (1) {
printf("Example daemon\n");
sleep(1);
}
}
return 0;
}
E este arquivo-fonte C pode ser compilado em um binário executável com o seguinte comando.
$ gcc -o egdaemon egdaemon.c