いちばん失敗した人決定戦

 クーロンで二つのバッチをスケジュールしてるのですが
 二つ目のバッチが動きません。 
 なにが原因なのでしょうか? 

** cron_file の変更** 

# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.18554 installed on Tue Apr 4 13:15:59 2000)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
0 0 * * * /u02/oradata/bat/A001.bat > /u02/oradata/bat/A001.log
0 * * * * /u04/tanaka1/bat/B001.bat > /u04/tanaka1/bat/B001.log

  * /u04/tanaka1/bat/B001.bat が 動かない

   B001.bat は chmod 777 で実行権限を付与
   
   $ B001.bat と 打つと

   コマンドが見つからない と エラーメッセージが出ます。

   一つ目のバッチは A001.log のタイムスタンプから動作してると思われます。    

A 回答 (5件)

crondは、実行したコマンドが(標準出力または標準エラー出力に)何らかの出力した場合、その内容をコマンド実行ユーザにメールします。



質問のcrontabだとstderrがリダイレクトされてないので、エラーがメールされてると思われます。メール配送システムが使えればですが。
crondからメールが届いてないか確認するか、stderrをファイルにリダイレクトしてみては。

参考URL:http://www.itmedia.co.jp/help/tips/linux/l0388.h …
    • good
    • 0
この回答へのお礼

bat/B001.bat 1>STD.LOG 2>ERR.LOG

と 書けば

標準出力も
エラー出力も
ファイル化されるので

デバッグしやすいって事ですね。

お礼日時:2005/04/21 20:05

> telnetで


> /u04/tanaka1/bat/B001.bat
> と打つと動作しますが

スクリプト自体は正常に動作するようですね。

> クーロンに組み込むと途中で
> 止まってるようです。

と言うことになるとtelnetでログインして実行した環境とcronで実行した時の環境の違いにより正常に動作しなくなるようですね。

この途中で止まっているというのはエラーになって終了、もしくはスクリプトに記述したコマンドが動作したままだんまりのどちらでしょうか?
エラーになるのでしたら、エラーメッセージが出力されていれば、そのエラーメッセージからどうすればいいかが分かるかもしれません。

ちなみにtelnetでログインして実行した時のユーザは、cronに登録した時のユーザと同一ユーザでしょうか、それとも別なユーザでしょうか?
(たぶん、結果からすると別ユーザでしょうかね)

cronに登録した時のユーザで同様にスクリプトファイルを実行するとcronで実行した時と同じく途中で止まりますか?

この回答への補足

>ちなみにtelnetでログインして実行した時のユーザは、cronに登録した時のユーザと同一ユーザでしょうか、
>それとも別なユーザでしょうか?

同一ユーザです。

補足日時:2005/04/21 22:29
    • good
    • 0

>$ B001.bat と 打つと



>   コマンドが見つからない と エラーメッセージが出ます。

これは、No.1の方も書いている通り、コマンドのサーチパス(環境変数PATH)に「B001.bat」が存在するディレクトリが無かっただけでは?

確認したかった事はcrontabに書いてあるように

# /u04/tanaka1/bat/B001.bat

と実行した場合には正常に動作するのかどうかという事です。

この回答への補足

>確認したかった事はcrontabに書いてあるように
># /u04/tanaka1/bat/B001.bat
>と実行した場合には正常に動作するのかどうかという事です。

 telnetで
 /u04/tanaka1/bat/B001.bat
 と打つと動作しますが

 クーロンに組み込むと途中で
 止まってるようです。

補足日時:2005/04/21 19:41
    • good
    • 0

cronでcrontabで設定した内容が実行されたかは、cronのログ/var/log/cronを見れば分かります。


以下のようなログが残っていれば、cronからは起動されたという事です。

○/var/log/cronの出力例
 「/bin/date > /tmp/LOG」をユーザrootで実行した場合
-------8<-------8<-------8<-------8<-------8<-------
Apr 16 15:41:01 FedoraCore3 crond[4918]: (root) CMD (/bin/date > /tmp/LOG)
-------8<-------8<-------8<-------8<-------8<-------

もしcronのログから「B001.bat」が起動されており、標準出力に何らかの出力があるのに標準出力をリダイレクトしたファイルに何も出力されていない場合、指定した「B001.bat」に問題があるとしか思えません。

No.2の方が書かれているようにcronからのメールがないか確認するか、標準エラー出力をファイルにリダイレクトして確認した方がいいでしょうね。

ところで、指定した「B001.bat」は、cronで実行させようとしているユーザ(crontabコマンド実行時のユーザ)でそもそも正常に動作する事は確認しているのでしょうか?

P.S.
この質問に関連すると思われる質問をしていらっしゃると思いますが。
それらについて出来れば質問の内容が解決したのなら質問を締め切ってもらえないでしょうか?
解決したのかしていないのか反応がないため分からないので。

この回答への補足

>ところで、指定した「B001.bat」は、cronで実行させようとしているユーザ(crontabコマンド実行時のユーザ)で
>そもそも正常に動作する事は確認しているのでしょうか?

$ B001.bat と 打つと

   コマンドが見つからない と エラーメッセージが出ます。

質問自体は自宅で
動作確認は会社でやってるので
この質問に対する結果は
4月18日(月)にならないと分かりません。

補足日時:2005/04/16 18:30
    • good
    • 0

$ B001.bat



でコマンドがないエラーとなるのは、カレントディレクトリにパスがないからではありませんか?その実行ファイルのあるディレクトリで

$ ./B001.bat

でもダメでしょうか。

cronが動かないのはちょっと理由がわかりませんが、/var/log/message(あるいは何らかのログ)にcrondからのログが出ていると思いますので、それを見たら何か手がかりがあるかもしれません。

この回答への補足

$ ./B001.bat

で動きました。

/var/log/message

は現在のユーザーでは
アクセス権限がありませんでした。

補足日時:2005/04/22 18:40
    • good
    • 0

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