Edit
deamontools

deamontoolsは、qmailを作った作者と同じため、管理方法が独自の仕組みとなっている。特にフォルだ構成については、トップレベルにフォルダを作成することから毛嫌いをする人も多いと思うが(私もその一人だが)非常にシンプル故に安定感もある便利なルールである。

提供される機能は、コマンドをプロセスとして登録することで、不慮の事態によるプログラム停止を監視し、再起動をかけてくれるものと考えればよい。

[公式ページ:http://cr.yp.to/daemontools/install.html]

Edit
インストール

# mkdir -p /package
# cd /package
# wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz   (curl -O でもOK)
# tar xvpfz daemontools-0.76.tar.gz
# cd admin/daemontools-0.76
# ./package/install

Edit
インストール後の設定

インストールが完了すると、以下の2つのディレクトリが作成され、/command は自動的に path に追加される。

/service
/command

Edit
起動スクリプト

/service フォルダの直下に作成するフォルダ名が登録サービス名となる。その中に作成する run スクリプトがアプリケーションの起動スクリプトとなる。
<runファイルの例>

#!/bin/sh
/usr/local/bin/node /var/www/node/app.js 2>&1 >> node.log 

Edit
プロセス管理用のスクリプト

下記のスクリプトは自分で使いやすい位置に、分かりやすい名前で置いておくと便利だろう。

Edit
プロセスのスタート

#!/bin/sh
svc -u /service/node

Edit
プロセスの停止

#!/bin/sh
svc -d /service/node

Edit
プロセスの状態確認

#!/bin/sh
svstat /service/node
ps axu| grep node
lsof -i:8080

Edit
rcコマンド

name=`dirname $1 | xargs -0 basename` # When/if we want to use last folder name as project name cd `dirname $1`

pidfile=/var/run/$name.pid

if [ -f "$pidfile" ]; then

   pid=`cat $pidfile`
   running=`ps p $pid |wc -l`
   if [ $running -eq 1 ]; then
       pid=
   fi

else

   pid=

fi

case $2 in

   start)
       if [ "$pid" = "" ]; then
           nohup /usr/local/bin/node $1.js $1.conf 2>&1 1>>/var/log/$name &
           echo $! > $pidfile
       fi
       $0 $1 status
       ;;
   stop)
       if [ "$pid" = "" ]; then
           echo Not running
       else
           echo Stopping $name
           kill $pid
       fi
       ;;
   restart)
       $0 $1 stop
       $0 $1 start
       ;;
   status)
       if [ "$pid" = "" ]; then
           echo Stopped
       else
           echo Running with PID $pid
       fi
       ;;
   *)
       echo $1 "stop|start|restart|status"
       ;;

esac

Edit
リンク