SysVinitのようなinitデーモンの代替となるUpstart。
書いてみたら凄く簡単だった。
initデーモンのスクリプトは書くの面倒だもんね。。
Upstartの基本的な書き方は、
ハートビーツさんの、「Upstart を使ってお手軽 daemon 化」の記事を参照するといい。
http://heartbeats.jp/hbblog/2013/02/upstart-daemon.html
この記事では、Upstartの特徴である、"イベント"に応じてジョブを実行/停止 を紹介したいと思う。
まず簡単な例で、runlevelの変更によって実行/停止をしたい場合以下のようになる。
$ cat /etc/init/apache.conf start on runlevel [2345] stop on runlevel [016] respawn exec /usr/local/apache/bin/httpd -DFOREGROUND
これをたとえば"app"というジョブが起動/停止したらapacheも起動/停止するようにしたい場合は以下のようになる。
$ cat /etc/init/app.conf start on runlevel [2345] stop on runlevel [016] $ cat /etc/init/apache.conf start on starting app stop on stopped app respawn exec /usr/local/apache/bin/httpd -DFOREGROUND
こうすることで、
$ sudo initctl start app
でapacheも起動する。
appにいろいろなジョブを紐付けておけば、
appジョブを起動/停止するだけで紐づくジョブも起動/停止してくれるので楽になる。
イベントのよって起動/停止したい場合は、書式は以下になる。
start on イベント ジョブ名 stop on イベント ジョブ名
イベントには以下の様な種類がある。
イベント | 説明 |
---|---|
starting | ジョブの起動が開始した時に発生 |
started | ジョブの起動が完了した時に発生 |
stopping | ジョブの停止が開始した時に発生 |
stopped | ジョブの停止が完了した時に発生 |
あるジョブの起動が完了してから起動した場合は、startedを選択するとよい。
ちなみに、
start on (イベント ジョブ名 or イベント ジョブ名) stop on (イベント ジョブ名 or イベント ジョブ名)
のような書き方や
start on (イベント ジョブ名 and イベント ジョブ名) stop on (イベント ジョブ名 and イベント ジョブ名)
のような書き方もできる。
もっとUpstartに関して知りたい場合は、以下のサイトを見るとよいと思う。
http://upstart.ubuntu.com/cookbook/
※console logとかsetuidとかを使いたかったけど、
CentOS6.3に入っているUpstartのバージョン0.6.5と凄く古かったので試せなかった…。