cronを介してNode.jsを起動すると、自動的に失敗します。

cronを介してNode.jsを起動すると、自動的に失敗します。

現在のサーバーがダウンするたびにサーバーを起動するcronjobを設定しようとしています。

これを行うために、ノードサーバーをテストして起動する簡単なスクリプトを作成しました。

#!/bin/bash

ts=$(date +%T)

if pgrep -f "node"
then
    echo $ts": node running"
else
    echo $ts": node not running"
    '/usr/bin/node' '/home/pi/project/serveronly/index.js' > '/home/pi/project/node.log'
fi

対応するcrontabは次のとおりです。

m   h   dom   mon   dow   command
*   *    *     *     *    /home/pi/project/sanity_check.sh >> /home/pi/project/cron.log 2&>1

私のロギングには次のものが表示されます。スクリプトを起動すると、サーバーが起動し、node.js 出力が正しく記録されます。

cronによって起動されたスクリプトの場合は、次のようになります。node.jsインスタンスが現在実行中の場合、インスタンスを検出してそれに応じて記録します。検出されないと正しくログインされますが、cron.log何もログインせず、node.logサーバーが起動しません。

ベストアンサー1

  1. フルパスを提供していません/home/pi/project/serveronly/index.js。初期スラッシュが欠落しているため、ノードプログラムはスクリプトを見つけることができません。

  2. 注文するはいホームディレクトリのファイルが正常に上書きされました。home/pi/project/node.logおそらくこれが意味するものでしょうproject.log。欲しいなら追加このログには、1つではなく2つより大きい記号を使用してください。

代わりにこれを使用します。

/usr/bin/node /home/pi/project/serveronly/index.js >> /home/pi/project/node.log

おすすめ記事