supervisorをインストール
http://supervisord.org/
基本的にはスーパーバイザなんだけど、適当なシェルスクリプトを実行できるので、デーモンにしてなかったスクリプトを走らせるためにインストールしてみた。
programのところに、
redirect_stderr=true
stdout_logfile=/var/log/2chnavicrawlerout
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
とか書いておくと、webインターフェースのtailするところから色々見れるので便利。
サーバー起動時に動かすためには、
http://serverfault.com/questions/96499/how-to-automatically-start-supervisord-on-linux-ubuntu
にあるけど、githubからのダウンロードがcurlではうまくいかなかったので、wgetで落として、リネームしたほうがいい。
このファイルだけだと、stopがうまく動かないので、下の方に書いてある2行(stop allとshutdown)をstopの先頭に加えておくときっちり止まる。
solrが、supervisorからstopしても、プロセスが生き続けたので、困ってた。
stopsignalが違うのかと思ってSIGTERM以外にもSIGQUITとか色々試してみたけど、結局プロセスが止まらない。よく考えてみればsupervisorはchild processの生死しか確認してないな、と思って、solrを起動するためにshell scriptを挟んでいたんだけど、これを直接supervisorから起動するようにしたらうまくいった。
[program:solr]
command=java -jar start.jar
directory=/home/user/apache-solr-3.1.0/example/