ただの雑記

おっさんエンジニアが適当に書き散らかしてます。

Upstartでサービス(デーモン)化

久々に技術っぽいことを書いてみる。

とはいえ、内容は次のサイトを見て貰えばOKなレベル。

heartbeats.jp

取りあえず何が嬉しいの?

sudo initctl start hogehogeが起動出来ます。
しかも、取りあえずkillしても自動で再起動させる事が出来るので、常時起動しておきたいプログラムの起動に便利。
さらに、嬉しいことに設定自体は超簡単です。

設定例

/etc/init/hoge.conf として次のような内容を保存。

description "Hoge service"

start on runlevel [2345]
stop on runlevel [016]

exec /user/local/bin/hoge
respawn

sudo/initctl start hogeでデーモンとして起動できます。
sudo/initctl stop hogeで停止もできますし、 sudo/initctl restart hogeで再起動も出来ます。

その他の設定

上の例で取りあえず起動出来るようになりましたが、現実的にはもう少し色々やりたいところ。

取りあえず、一番最初に必要になったのが実行ユーザの指定。

execにコマンドを挟めるのでexec sudo -u hoge /user/local/bin/hogeでも良さそうですが、どうやらUpstartはその辺の仕組みもあるっぽい。

qiita.com

ただ、使っている環境のUpstartの環境が古いので、先のQuitaの記事のinitctl version < 1.4の方を採用。
ついでにUpstartのCookbookもチェック

Upstart Intro, Cookbook and Best Practises

次のような感じで、取りあえず。

description "Hoge service"

user=hoge
command=/user/local/bin/hoge

start on runlevel [2345]
stop on runlevel [016]

exec su -s /bin/sh -c 'exec "$0" "$@"' $user -- $command
respawn