背景
kibana をインストールするときに、initscriptを自分で作成した。その時に疑問に思った initscriptの記法についてメモしておく。 https://github.com/akabdog/scripts/blob/master/kibana4_init ここらへんを参考に自分でPATHなど変更して使った。上の方にBEGIN INIT INFOで始まるブロックがあるが、それの意味を調べた。
参考
- http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/initscrcomconv.html
- http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/facilname.html
- http://linux.die.net/man/8/chkconfig
INIT INFO
LSB(Linux Standard Base)の記法。ディストリビューションによらない共有の記述みたい。chkconfigはRedhat系だけっぽい。
### BEGIN INIT INFO # Provides: kibana # Required-Start: $local_fs $remote_fs $network # Should-Start: $time # Required-Stop: $local_fs $remote_fs $network # Default-Start: 3 5 # Default-Stop: 0 1 2 6 # Short-Description: Kibana 4 # Description: Service controller for Kibana 4 ### END INIT INFO
- Required-Start: ここで指定されたserviceを起動した後でこのinitscriptのプロセスを起動する
- Default-Start: 起動するrunlevel を指定する。ネットワーク経由でアクセスする前提のプロセスについては大体3(マルチユーザモード)と5(マルチユーザモード+Xディスプレイマネージャ)。2はマルチユーザモードだけどネットワークを起動しない。
chkconfig と書いてあるinitscriptもあるけど?
elasticsearch はLSBの記法に加えて、内容が重複するものが書いてあった。
# chkconfig: 2345 80 20 # description: Starts and stops a single elasticsearch instance on this system # ### BEGIN INIT INFO # Provides: Elasticsearch # Required-Start: $network $named # Required-Stop: $network $named # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: This service manages the elasticsearch daemon # Description: Elasticsearch is a very scalable, schema-free and high-performance search solution supporting multi-tenancy and near realtime search. ### END INIT INFO
chkconfigの記法では、priority が数値で指定できるが、LSBの記法だとRequired-startとかで前後関係しか指定できない。priorityの間に新しいのが入ると大規模な(数値の)シフトがおこるっぽい。 内容が重複しているので、LSBとchkconfigでどちらが優先されるのか調べたところchkconfigコマンドのmanによれば、LSBの記述が優先されるみたい。