node.jsを永続化。foreverでuidを指定して起動したい時。
2014年1月22日
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もまた触らないとなーと思った。