Ubuntu,新贵,并创建一个监控pid

Tam*_*mpa 34 ubuntu upstart

下面是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"
Run Code Online (Sandbox Code Playgroud)

gre*_*zap 68

如果您的计算机上有start-stop-daemon,我强烈建议您使用它来启动您的进程.start-stop-daemon将处理以非特权用户身份启动进程而不需要sudo或su(在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
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用post-start script节创建它来手动管理pid文件,并使用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
Run Code Online (Sandbox Code Playgroud)


Aig*_*lis 22

Egg的第一个启动 - 停止 - 守护进程的例子是要走的路.

如果你选择第二,我会建议$$来获得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
Run Code Online (Sandbox Code Playgroud)