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 がインストールされています。
これで試験したところ、再起動後にスクリプトが起動・動作していることを確認できました。