Ubuntu, upstart, and creating a pid for monitoring

前端 未结 2 1678
不知归路
不知归路 2020-12-22 21:22

Below is a upstart script for redis. How to I create a pid so I use monit for monitoring?

#!upstart
description \"Redis Server\"

env USER=redis

start on s         


        
相关标签:
2条回答
  • 2020-12-22 21:41

    Egg's 1st example with start-stop-daemon is way to go.

    If You choose 2nd, I would suggest $$ to obtain the 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
    
    0 讨论(0)
  • 2020-12-22 21:49

    If start-stop-daemon is available on your machine, I would highly recommend using it to launch your process. start-stop-daemon will handle launching the process as an unprivileged user without forking from sudo or su (recommended in the upstart cookbook) AND it also has built in support for pid file management. 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
    

    Alternatively you could manually manage the pid file by using the post-start script stanza to create it and post-stop script stanza to delete it. 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
    
    0 讨论(0)
提交回复
热议问题