node.jsを永続化。foreverでuidを指定して起動したい時。

foreverのインストール

現在の最新forever(v0.10.11)をインストールしました。

npm install forever -g

-gは、グローバルオプション(どこでも叩けるようにする為)

これで、app.jsを永続化することができました。

// start
forever start app.js

// stop
forever stop app.js

特定のプロセスだけを落としたい

すべてのプロセスを落としたいのであれば

forever stop app.js

と、起動したjsを指定すればいいんですが、その中でも特定のプロセスだけを落としたい場合は、listを使って

forever list

info:    Forever processes running
data:    uid       command                                   script forever pid logfile                     uptime
data:    [0] yjxb /home/app/.nodebrew/node/v0.11.10/bin/node app.js 26803 26810 /home/app/.forever/yjxb.log 0:0:0:4.453 

表示されたdata: に続く部分[0]か、yjxb(uid)を指定して

forever stop 0
// もしくは
forever stop yjxb

で、特定のプロセスを落とすことができます。

ただ、これだけだと、どれが落としたいプロセスなのかわからないので、起動時にuidを指定します。

forever start --uid u1000 app.js

// 確認
forever list

info:    Forever processes running
data:    uid        command                                   script forever pid logfile                     uptime
data:    [0] yjxb  /home/app/.nodebrew/node/v0.11.10/bin/node app.js 26803 26810 /home/app/.forever/yjxb.log 0:0:0:4.453
data:    [1] u1000 /home/app/.nodebrew/node/v0.11.10/bin/node app.js 27864 27871 /home/app/.forever/a1000.log 0:0:0:4.891

先ほどは、ランダムで決定されたuidでしたが、今回は指定したuidで起動しています。

ちなみに、数字だけのuidは使えません。
ま、使えなくはないですが、stopで数字を指定すると起動順[n]の方で落とされます。
–uid 10と起動したとしても、data: [10] xxxx のnode.jsを落とそうとするので・・。

ログを追記モードに

ただ、このままだと、start -> stop -> startと、停止後に再度起動しようとした際にエラーが発生します。
ログ名は{uid}.logで、一度起動した事があるuidで再度起動しようとすると、すでに同名のファイルが存在する為です。
そこでログ出力を新規ファイルではなく、追記するようにします。
start時に-aのオプションを追加。

// -a(--append)で、logを追記モードに
forever start --uid u1000 -a app.js

そんな感じで、ぼちぼちnode.jsもまた触らないとなーと思った。