
非常にシンプルな bash スクリプト (run-build.sh) があります。
cd /var/www/project
npm run build
このスクリプトはコマンドラインから実行すると正常に動作しますが、cron ジョブを使用して 30 分ごとに実行したいとします。
*/30 * * * * /var/www/project/run-build.sh >> /var/www/test.log 2>&1
何らかの理由で、これは機能しません。root ユーザーとして cron ジョブを実行したり、cron ジョブの一部としてノードへのパスを追加したりするなど、さまざまな方法を試しました。ただし、まだ解決策が見つかっていないため、ここに投稿しています。
この cron ジョブを動作させる方法について何かアイデアをお持ちの方はいらっしゃいますか?
答え1
cronjobを次のように更新しました:
* */12 * * * sudo -u user /var/www/project/run-build.sh >> /var/www/test.log 2>&1
そして今は動作します。以前にも試したことがあるはずですが、何か違うことを試したに違いありません。
答え2
私も同様の問題を抱えていました。私の場合、問題は .sh スクリプトに実行権限がないために発生していました。
スクリプト ファイルx
に実行権限 ( フラグ)があるかどうかを確認しますll
。ない場合は、次のようになります。
chmod 744 file
ユーザーがルートなしで実行できるようにする必要があります。