現在のサーバーがダウンするたびにサーバーを起動する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
フルパスを提供していません
/home/pi/project/serveronly/index.js
。初期スラッシュが欠落しているため、ノードプログラムはスクリプトを見つけることができません。注文するはいホームディレクトリのファイルが正常に上書きされました。
home/pi/project/node.log
おそらくこれが意味するものでしょうproject.log
。欲しいなら追加このログには、1つではなく2つより大きい記号を使用してください。
代わりにこれを使用します。
/usr/bin/node /home/pi/project/serveronly/index.js >> /home/pi/project/node.log