1

私が問題を抱えていると予想される最後のこと。

毎分実行する必要がある grunt ファイルがあります。JSHint を実行し、出力をキャプチャして、Amazon SES を介してメールで送信します。コマンドラインで実行すると問題なく動作します。ただし、cron を介して実行すると、サイレントに失敗します。何も起こりません。送信された電子メールを別のノード ファイルに分割しました。単独では実行されません。この 2 番目のファイルからすべてのファイルの読み取りを取り出し、値をハードコーディングした電子メールを送信するだけで、すべてを単独で実行しようとしました。サイコロはありません。繰り返しますが、コマンドラインから実行すると問題なく実行されます。

実行中という cron ログのエントリを確認できます。影響を受けるすべてのファイルとディレクトリへのアクセスを、誰でも実行できるようにしました。ファイルが見つからないために黙って失敗しないように、すべてのディレクトリ パスをハードコーディングしました。

cron エントリは次のとおりです: */1 * * * * sh /var/test/trunk/build/batch_jshint.sh

シェルスクリプトは次のとおりです。

#!/bin/bash
export PATH=$PATH:/opt/node/bin
cd /var/test/trunk/build/
grunt jshint_check --gruntfile /var/test/trunk/build/Grunt_jshint.js
node /var/test/trunk/build/send_jshint_email.js

Cron ログ: 7 月 18 日 22:23:01 ip-10-251-25-8 CRON[2923]: (ubuntu) CMD (sh /var/SmartGlass/sg2-nfl/trunk/build/batch_jshint.sh) 7 月 18 22 :23:01 ip-10-251-25-8 CRON[2924]: (ubuntu) CMD (sh /var/SmartGlass/sg2-nfl/trunk/build/test.sh) 7 月 18 日 22:23:01 ip- 10-251-25-8 CRON[2925]: (ubuntu) CMD (/usr/bin/uptime > /tmp/uptime) 7 月 18 日 22:23:01 ip-10-251-25-8 CRON[2922]: (CRON) 情報 (MTA がインストールされていない、出力を破棄) Jul 18 22:24:01 ip-10-251-25-8 CRON[2932]: (ubuntu) CMD (sh /var/SmartGlass/sg2-nfl/trunk/ build/batch_jshint.sh) 7 月 18 日 22:24:01 ip-10-251-25-8 CRON[2933]: (ubuntu) CMD (sh /var/SmartGlass/sg2-nfl/trunk/build/test.sh) 7 月 18 日 22:24:01 ip-10-251-25-8 CRON[2934]: (ubuntu) CMD (/usr/bin/uptime > /tmp/uptime) 7 月 18 日 22:24:01 ip-10-251 -25-8 CRON[2931]: (CRON) 情報 (MTA がインストールされていないため、出力を破棄します)

私は今かなり困惑しているので、どんな提案もありがたく受け入れられます。

4

1 に答える 1

3

もちろん、私がチェックしなかったことの1つ。ノードへのパスと grunt 実行可能ファイルをバッチ ファイルに含める必要がありました。ログイン時にそれを行う必要はないという事実にもかかわらず、それはcronジョブを実行している同じユーザーです。

于 2013-07-18T23:12:19.643 に答える