NodeJSで作ったプログラムをCronのように動かしたい。
どうやらnode-cronというモジュールがあるらしい。
Node.jsで特定の処理を指定日時、あるいは特定のパターンの日時に繰り返し実行する方法: node-cronを使う
上記サイトを参考に、関連モジュールをnpmでインストール。
$ npm install cron $ npm install time
サンプルコード内のjob.stop();をコメントアウトさせ、いつものように $ node crontest.js と実行させると、1秒毎にHelloが表示される。
// Stops your job. // job.stop(); コメントアウト
Ctr + C で終了。
次に、過去に作ったNodeJSプログラムをCronで動かしたい。
サンプルコードをみるとonTickの中にで過去のプログラムを動かせばよさそうだ。
… onTick: function() { console.log('Hello.'); } …
下記のサイトを参考に外部ファイル化させ、上記メソッド内で実行させるとOK。
node.jsで外部ファイルのJavaScriptを呼び出す
※NodeJSに限らず、Cronのような処理を行うときは、プログラム内のファイルへのパスを絶対パスで記述しないと動かないので注意。
次にCronをデーモン化させる。
foreverモジュールを利用。グローバルインストールさせないとなぜかコマンドが認識されないので下記のようにインストール。
$ npm install -g forever
下記のコマンドでデーモン化。
$ forever start crontest.js
稼働中のデーモン一覧を見る時は
$ forever list
どうやらログファイルも自動生成されるようで、プログラム内のエラーやconsole.logがそのログに記録されていく。
停止させるときは
$ forever stop (listで確認したuid)
以上。