2

LSF キューイング システム コマンド「bqueues」の出力からクラスタ内のジョブを監視する bash スクリプトがあります。スクリプトは正常に実行されます。ここで、このスクリプトを呼び出す crontab エントリを作成したいと思いました。問題は、bqueues に関連するすべてがまったく出力を生成しないことです。その理由は何でしょうか?

4

1 に答える 1

3
  1. cron ジョブは、ユーザーのログイン環境を継承しません。具体的には、.login や .profile などで設定された環境変数は使用できません。cron ジョブが失敗する唯一の最も一般的な理由は、PATH 設定がスクリプト作成者が想定したものではないことです。
  2. Cron ジョブには、関連付けられた stdin がありません。cron はユーザーの .login/.profile を実行しませんが、シェルを正常に起動するため、シェルの起動ファイル (.cshrc、.bashrc など) が実行されます。また、cronjob で使用される一部のコマンドは、存在する端末に依存している可能性があります。たとえば、「vi」をバッチ モードで起動しようとしている場合は、しないでください。代わりに、ed または sed に置き換えます。
  3. cron ジョブの出力は、Unix メールで crontab 所有者に送信されます
  4. crontab 自体のアクセス許可。ファイルのパーミッションが正しく設定されていない場合、多くの cron 実装は crontab を調べません。一般に、権限は非常に厳しくする必要があります。所有者は読み取り/書き込みのみで、グループやその他の権限はありません。
  5. envシェルと crontab から発行して環境を比較します。
  6. ...

デバッグのヒントについては、「特定のスクリプトを実行していない cron の問題をデバッグする方法」または「その他」を参照してください。

于 2011-06-16T12:03:59.177 に答える