7

パスと変数をエクスポートしようとしましたが、crontab はまだスクリプトを実行しません。私は何か間違ったことをしていると確信しています。

jar ファイルを実行するシェル スクリプトがあります。これは正しく機能していません。

周りを読んだ後、これは通常、独自のシェルインスタンスを介して実行されている cron による誤ったパスが原因であるため、私のプロファイルと同じ設定が設定されていないことを読みました。

いくつかの変更を加えた後、私のスクリプトは次のようになります。

#!/bin/bash --

. /root/.bash_profile

/usr/bin/java -jar Pharmagistics_auto.jar -o

...

これらはスクリプトの最も重要な部分であり、残りは単純なシェル ベースです。

誰かが私が間違っていることを教えてもらえますか?

4

6 に答える 6

14

jar ファイルへのフル パスを指定してみてください。

/usr/bin/java -jar /path/to/Pharmagistics_auto.jar -o
于 2010-02-08T23:40:34.600 に答える
3

すでに除外されていることをお伝えします。パスと環境を確認してください。

すでにこれを行っているので、デバッグを開始します。ログファイルにチェックポイントを書き込んで、スクリプトがどこまで到達したかを確認したり (たとえ開始されたとしても)、cronjob ログ ファイルでエラーをチェックしたり、メールをチェックしたり (cron はエラー時にメールを送信します) など...

あまり具体的ではありません、申し訳ありません。

于 2010-02-08T21:27:25.950 に答える
2

crontab は別のユーザーによって別のシェルで実行されるため、「パスと変数のエクスポート」は機能しません。

また、これが質問の入力方法のタイプミスかどうかはわかりませんが、次のようになります。

usr/bin/java

...そして、完全修飾パスを指定していないことに気付きます。現在の作業ディレクトリで「usr」という名前のディレクトリを探しています。多くの場合、crontab では cwd が定義されていないため、参照がどこにも行きません。

次のように、ルートからのフル パスを指定してみてください。

/usr/bin/java

または、実際の相対パスの例を見たい場合は、次を試すこともできます。

cd /

usr/bin/java

于 2010-02-08T21:34:27.170 に答える
1

いくつかの考え。

  1. --の後に を削除します#!/bin/bash
  2. cron によって表示されるスクリプト出力を、メールまたは表示できる別の場所に送るようにしてください (例: MAILTO=desiredUser)。
  3. スクリプトが実行されており、別の実行時間の長いスクリプトによってブロックされていないことを確認します (たとえば、2 行目に を追加しtouch /tmp/MY_SCRIPT_RAN && exitます) 。
  4. set -xを使用してスクリプトをデバッグし、set -v実際に実行されていることがわかったら
于 2010-02-08T21:30:04.673 に答える
0

個人の.profile(または他のスクリプト)で必要なパスとenv変数を定義していますか?その特定のファイルを調達しようとしましたか(または、/ root / .bash_profileですでに行っていることですか?)

これを尋ねる別の方法は次のとおりです。あなたが期待する必要なパスとenv変数が実際に利用可能であると確信していますか?

他に何もない場合は、個々の値をエコーするか、スクリプトで「env」コマンドを使用してからstdoutを確認してみましたか?

于 2010-02-08T21:53:05.837 に答える
0

jar ファイルへのフル パスと、crontab を実行しているユーザーを教えてください。通常のユーザー用に設定した場合、そのユーザーはルートのプロファイルを取得する権限を持っていると思いますか?

于 2010-02-09T00:00:48.577 に答える