Ubuntu, выскочка и создание pid для мониторинга - PullRequest
34 голосов
/ 02 апреля 2012

Ниже приведен выскочивший скрипт для redis.Как мне создать pid, чтобы я использовал monit для мониторинга?

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

Ответы [ 2 ]

68 голосов
/ 10 мая 2012

Если на вашем компьютере есть start-stop-daemon, я настоятельно рекомендую использовать его для запуска вашего процесса.start-stop-daemon будет управлять запуском процесса как непривилегированный пользователь без разветвления от sudo или su ( рекомендуется в поваренной книге upstart ) И также имеет встроенную поддержку управления файлами pid.Например:

/ 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

В качестве альтернативы вы можете вручную управлять файлом pid с помощью раздела post-start script для его создания иpost-stop script раздел, чтобы удалить его.Например:

/ 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
21 голосов
/ 17 марта 2013

Первый пример яйца с start-stop-daemon - это путь.

Если вы выберете 2-е, я бы предложил $$ для получения 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
...