Ubuntu, upstart и создание pid для мониторинга
Ниже приведен сценарий выскочки для 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 ответов
если start-stop-daemon доступен на вашем компьютере, я настоятельно рекомендую использовать его для запуска вашего процесса. start-stop-daemon будет обрабатывать запуск процесса как непривилегированный пользователь без разветвления от sudo или su (рекомендуется в выскочке поваренной книге), а также встроенная поддержка управления файлами 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
первый пример Egg с Start-stop-daemon-это путь.
Если вы выберете 2nd, я бы предложил $$ для получения 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