web-dev-qa-db-fra.com

Ubuntu, upstart et création d'un pid pour la surveillance

Vous trouverez ci-dessous un script parvenu pour redis. Comment créer un pid pour utiliser monit pour la surveillance?

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

Si le démon start-stop est disponible sur votre machine, je vous recommande fortement de l'utiliser pour lancer votre processus. start-stop-daemon gérera le lancement du processus en tant qu'utilisateur non privilégié sans bifurquer de Sudo ou su ( recommandé dans le livre de recettes upstart ) ET il a également un support intégré pour la gestion des fichiers pid. Par exemple:

/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

Vous pouvez également gérer manuellement le fichier pid en utilisant le post-start script strophe pour le créer et post-stop script strophe pour le supprimer. Par exemple:

/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
gregtczap

Le premier exemple d'Egg avec start-stop-daemon est le chemin à parcourir.

Si vous choisissez 2e, je suggère $$ pour obtenir le 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
22
Aigars Matulis