Ubuntu, upstart, y la creación de un pid para la supervisión


A continuación se muestra un script advenedizo para redis. ¿Cómo puedo crear un pid para usar monit para el monitoreo?

#!upstart
description "Redis Server"

env USER=redis

start on startup
stop on shutdown

respawn

exec sudo -u $USER sh -c "/usr/local/bin/redis-server /etc/redis/redis.conf 2>&1 >> /var/log/redis/redis.log"
Author: Tampa, 2012-04-02

2 answers

Si start-stop-daemon está disponible en su máquina, le recomendaría usarlo para iniciar su proceso. start-stop-daemon manejará el lanzamiento del proceso como un usuario sin privilegios sin bifurcarse de sudo o su ( recomendado en el libro de cocina de upstart) Y también tiene soporte incorporado para la administración de archivos pid. Eg:

/etc / init / app_name.conf

#!upstart
description "Redis Server"

env USER=redis

start on startup
stop on shutdown

respawn

exec start-stop-daemon --start --make-pidfile --pidfile /var/run/app_name.pid --chuid $USER --exec /usr/local/bin/redis-server /etc/redis/redis.conf >> /var/log/redis/redis.log 2>&1

Alternativamente, puede administrar manualmente el archivo pid utilizando la estrofa post-start script para crearlo y post-stop script estrofa para eliminarlo. Eg:

/etc / init / app_name.conf

#!upstart
description "Redis Server"

env USER=redis

start on startup
stop on shutdown

respawn

exec sudo -u $USER sh -c "/usr/local/bin/redis-server /etc/redis/redis.conf 2>&1 >> /var/log/redis/redis.log"

post-start script
    PID=`status app_name | egrep -oi '([0-9]+)$' | head -n1`
    echo $PID > /var/run/app_name.pid
end script

post-stop script
    rm -f /var/run/app_name.pid
end script
 68
Author: Egg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-10 19:17:45

El 1er ejemplo de Egg con start-stop-daemon es el camino a seguir.

Si eliges 2nd, yo sugeriría obtain para obtener el PID.

#!upstart
description "Redis Server"

env USER=redis

start on startup
stop on shutdown

respawn

script
    echo $$ > /var/run/app_name.pid
    exec sudo -u $USER sh -c "/usr/local/bin/redis-server /etc/redis/redis.conf 2>&1 >> /var/log/redis/redis.log"
end script

post-stop script
    rm -f /var/run/app_name.pid
end script
 21
Author: Aigars Matulis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-16 21:55:27