回答受付中の質問
クーロンにて、シェルを自動起動し、JAVAコマンドを動かそうとしています。
cron → abc.sh実行
└def.sh実行
└JAVAコマンド実行
という位置付けです。
まず、
0 3 * * * sh /usr/src/sh/abc.sh
という設定にてクーロンを自動実行しようとしました。abc.shの内容はこうです。
#!bin/sh
/bin/sh /usr/src/sh/def.sh> /log/def.txt
def.txtというテキストは生成されるのですが、def.shが実行されていません。。
def.shの中身はjavaコマンドで、
java aaa.bbb.ccc.ddd/conf/repair.properties
というものです。
また、念のため、クーロンに直接
0 3 * * * /bin/sh /usr/src/sh/def.sh
ともやってみましたが、結果は同じでした。
どうすればdef.shがちゃんと実行されるでしょうか?
そもそもjavaコマンドをクーロンですることはできないのでしょうか?
投稿日時 - 2003-09-07 04:03:35
1人が「このQ&Aが役に立った」と投票しています
回答(2件中 1~2件目)
cronから本当に直接
0 3 * * * java aaa.bbb.ccc.ddd/conf/repair.properties > /log/def.txt
これでどうでしょうか?
ちなみに、abc.shの中でたとえば
exec >/tmp/abc.log 2>&1
set -xv
というのをいれておくと、どのように実行されたのかをファイルに記録することができます。ご活用ください。
投稿日時 - 2003-09-07 18:35:48
補足
昨日はご回答ありがとうございました。今日、早速ご紹介いただいた方法をやってみましたが、やはりだめでした。。
どうも、クーロンで実行する際は、クラスパスを定義しないといけないという話を聞き、shellの中で、以下のようにクラスパスの部分を追記しました。
#!/bin/sh
##以下2行追記##
CLASSPATH=/opt/abcdefg/abc:/opt/defghij/services/abc/def
export CLASSPATH
##追記はここまで##
java aaa.bbb.ccc.ddd/conf/repair.properties
クラスパスは、envでたたいたあとでてきたCLASSPATHの記述をそのまま漏れなく記述しました。
そのあと、クーロンで実行したところ、
以下のようなエラーがクーロンのログででました。(abc.shはJAVAを実行するための親シェル)
> CMD: sh /usr/local/sh/4/abc.sh
> root 17553 c (月) 9月 8 17:24:00 2003
< root 17553 c (月) 9月 8 17:24:02 2003 rc=1
rc=1は明らかに環境変数のエラーだそうです。
他に環境変数で何か足りないのでしょうか??さっぱりです。。。
もしご存知でしたら、で結構です。何かヒントでもあればぜひお願いします。
投稿日時 - 2003-09-08 23:29:30
お礼
なるほど。その手がありました。明日、やってみて、また報告させていただきます。また、abc.shのなかにexecを入れる方法もやってみようと思います。
ご回答ありがとうございました!
投稿日時 - 2003-09-08 00:01:13