以下は、redisのスタートアップスクリプトです。監視に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"
マシンでstart-stop-daemonが使用可能な場合、それを使用してプロセスを起動することを強くお勧めします。 start-stop-daemonは、Sudoまたはsuからフォークすることなく、特権のないユーザーとしてプロセスの起動を処理します( pstart 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
スタンザを使用して作成し、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
開始-停止-デーモンを使用した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