34

以下は、redis の upstart スクリプトです。モニターに monit を使用するために pid を作成するにはどうすればよいですか?

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

2 に答える 2

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

post-start scriptまたは、スタンザを使用して pid ファイルを作成し、post-stop scriptスタンザを使用して削除することにより、手動で 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
于 2012-05-10T18:21:05.583 に答える
22

start-stop-daemon を使用した Egg の最初の例は、なかなかのものです。

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
于 2013-03-16T21:55:27.493 に答える