プロが教える店舗&オフィスのセキュリティ対策術

クーロンにて、シェルを自動起動し、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コマンドをクーロンですることはできないのでしょうか?

A 回答 (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

というのをいれておくと、どのように実行されたのかをファイルに記録することができます。ご活用ください。

この回答への補足

昨日はご回答ありがとうございました。今日、早速ご紹介いただいた方法をやってみましたが、やはりだめでした。。

どうも、クーロンで実行する際は、クラスパスを定義しないといけないという話を聞き、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
    • good
    • 0
この回答へのお礼

なるほど。その手がありました。明日、やってみて、また報告させていただきます。また、abc.shのなかにexecを入れる方法もやってみようと思います。
ご回答ありがとうございました!

お礼日時:2003/09/08 00:01

こんばんは。

シェルスクリプトの1行目は

>#!bin/sh

ではなく

#!/bin/sh

としなくてはなりません。変更の上再度お試し下さい。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。すいません、これは質問時の誤りです。ご指摘いただいたようにスラッシュは入れていました。正しく書かず、申し訳ございませんでした。そしてご指摘ありがとうございました。以後気をつけます。

お礼日時:2003/09/07 23:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!