cron から node スクリプトをキックする

cron から nodeスクリプト をキックする方法について長らく嵌まっていたのでメモ。

経緯

とあるサーバで markdown-pdf によるPDF生成を行いたくて、自前の nodeスクリプト を作成・運用していました。

ただし、そのサーバは一定期間ごとに再起動をかけているため、その度に自前の nodeスプリプト のプロセスが切れてしまいます。そこで cron で「再起動後に nodeスクリプト をキックする」ようなジョブを書いたのですが……。

@reboot root node /PATH/TO/NODE-SCRIPT/index.js &
30 2 * * 0 root reboot

しかし、上手く行きませんでした。

調査・対処

/var/log/cron で確認すると、 cronジョブ 自体は実行されていそうなのですが、 ps aux | grep "node" で確認すると、 node のプロセスはありません。起動できていないようです。

その原因が分からず悩まされていたのですが、ふと node のパスがおかしいのでは、と気付き以下のように修正。

@reboot root /usr/local/bin/node /PATH/TO/NODE-SCRIPT/index.js &
30 2 * * 0 root reboot

※ちなみにこのサーバは n を使って node がインストールされています。

これで試験したところ、再起動後にスクリプトが起動・動作していることを確認できました。

参考

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。