プロが教えるわが家の防犯対策術!

LINUX用HULFT Ver5についてなのですが、
utlrjobというコマンドをシェルに書きcronにて実行しようとしたのですが「ISAM file access error」というメッセージが出てしまいます。
管理者権限でダイレクトにシェルを実行してみると問題なく動きました。
シェルの所有者も管理者権限物となっていますし、シェル内に書いたコマンドも絶対パスになっています。
お分かりの方がいらっしゃいましたら、ご回答の程よろしくお願い致します。

A 回答 (2件)

Linuxでは無いですが、UNIXで考えられる原因を記述します。



原因: 実行ユーザが管理者でない。
シェルの所有者は管理者であっても実行するユーザが
管理者で無ければ権限不足が発生します。

対策:
(1) 管理者としてCRONを実行する。
=> これが確実だと思います。
(2) 一般ユーザでも実行できるようにする。
% chown root:sys xxxxx utlrjob
% chmod +s utlrjob
=> LinuxでSビットがあるか不明なので確認して下さい。
    • good
    • 0
この回答へのお礼

ryonana様
ご回答ありがとうございます。(2)を試したのですが、utlrjobが使用していると思われるファイルへのアクセスで権限エラーとなるようです。ただ、セキュリティ的に問題もあり避けたい考えです。
(1)についてはCRONの実行事体が管理者権限で動いているものとばかり思っていたもので、実際にどのユーザーおよび権限で動いているのかどうかを確認する良い方法があればお教え願えませんでしょうか?

お礼日時:2008/06/02 11:48

私もLinuxは詳しくないのですが、参考にして下さい。



(1) 現在のユーザーを確認する。
% who am i
※ ここでrootとなっていれば現在のユーザはシステム管理者です。

(2) CRON登録されている内容を確認する。
% crontab -l
* * * * * * /xxx/zzz/utlrjob
※ utlrjob が登録されていればシステム管理者(現在のユーザ)
権限で実行されています。

crontab で登録されていない場合は、他のユーザで登録されていますので管理者としてCRONに登録する必要があります。

ただ「ISAM file access error」を別の角度でみた場合、
索引編成を利用しているらしいので、何を使用しているかは
分かりませんがミドルを利用する際のPATHが足らない様な気がします。
CRONは shで起動しますが、直接実行(正常)する時のログインシェルが
cshであればログイン時に様々なパス設定をされていたりするので
環境が違う為、同様の結果を得ることはできません。

utlrjob のなるべく先頭に
「echo $path > /tmp/utlrjob_path.log」を付与して
pathの内容をファイルに出力して、正常終了するpath設定と比較して
みると良いかもしれません。
不足分のpathをutlrjobの先頭に追加してみてください。
cshであれば set path = ($path /xxx/yyy /zzz/aaa) で
追加できます。

ちなみにcshであれば、先頭のおまじないに -x を付与して
CRON の登録を変更すれば何処で落ちたか分かると思います。
シェル(utlrjob)
#/bin/csh -x
CRON
* * * * * /xxx/yyy/utlrjob > /tmp/utlrjob.log

後は、管理者権限もあると思いますが、アクセスする
索引編成ファイルに適切な権限が付与されているか
確認する必要はあると思います。
可能性があります。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
返信遅れましたことお詫びいたします。
アドバイスいただきました(1)(2)の部分での確認においては
管理者となっていました。
Cシェル環境での確認はこれから行ってみます。
進展がありましたら、ご報告させていただきます。
その際はまたご指導ご指摘の程、よろしくお願い致します。

お礼日時:2008/06/04 17:49

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