下面是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"发布于 2012-05-11 02:21:06
如果您的机器上有start-stop-daemon,我强烈建议您使用它来启动您的进程。启动-停止-守护程序将以非特权用户的身份启动进程,而无需从sudo或su (recommended in the upstart cookbook)派生,并且它还内置了对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或者,您可以通过使用post-start script节创建pid文件,使用post-stop script节删除pid文件来手动管理pid文件。例如:
/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发布于 2013-03-17 05:55:27
Egg的第一个使用start-stop-daemon的示例是可行的。
如果选择choose,我建议使用$$来获取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 scripthttps://stackoverflow.com/questions/9972023
复制相似问题