tutorial traduccion respawn meaning etc create conf ubuntu upstart

traduccion - Ubuntu, advenedizo y creando un pid para monitoreo



upstart ubuntu tutorial (2)

A continuación se muestra un script advenedizo para redis. ¿Cómo puedo crear un pid así que uso monit para monitorizar?

#!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"


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

Si elige 2nd, sugeriría $$ 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


Si start-stop-daemon está disponible en su máquina, le recomiendo usarlo para iniciar su proceso. start-stop-daemon se encargará de iniciar el proceso como un usuario no privilegiado sin bifurcaciones de sudo o su ( recomendado en el recetario de inicio ) Y también ha incorporado soporte para la administración de archivos pid. P.ej:

/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

De forma alternativa, puede gestionar manualmente el archivo pid utilizando la post-start script para crearlo y post-stop script para eliminarlo. P.ej:

/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