pidファイルの管理をする

pgrep -F pidfileオプションを使うと、pidfileを開いて、その中にあるプロセスIDが存在するか調べ、存在している場合には、0で終了してくれるようだ。

なので、起動スクリプトとかで、pidfileの存在チェックとかをするときには、

   if test -e $PIDFILE && pgrep -F $PIDFILE > /dev/null; then

       restart

   fi

とか書いてやれば、マシンがハングアップとかして、正常に終了しなくて、pidfileが残っているがファイル内にあるプロセスIDはもういない場合にrestartをしても悲しいことにならずにすむ。

複数サーバーでtail -fする

各サーバーへ入ってなんか状態を監視というのをやりたいことがあります。各サーバーのログファイルをtail -fとか。それだけだと、単にforkして何かコマンド実行させればよいだけ、だったりしますが、単にそうしてしまうと、標準出力などがメインのプロセスになってくれないので、監視した結果をgrepしてどうこうとか、そういうのができないので、できるように書いてみました。

https://gist.github.com/1948000

forkして子プロセスでコマンドを実行し、その出力をPIPEでプロセス間通信して、メインプロセスから出力してやることで、複数サーバーに同時にtail -fとかしつつ、grepかけるようにできるようになったのでした。