- ベストアンサー
crontabで設定した内容が起動しません
RedHat8.0です。 あるユーザで、 [/etc]$ crontab -e を実行し、 --------------------------------------- SHELL=/bin/csh PATH=/sbin:/bin:/usr/sbin:/usr/bin:/bat HOME=/home/user # 0 0-23 * * 1-5 /bat/sync.csh p1 p2 p3 --------------------------------------- : のような設定をしているのですが、 毎時00分の実行が行われません。 試しに、 0-59/1 0-23 * * 1-5 /bat/sync.csh p1 p2 p3 のように書いて、しばらく様子をみていましたが、 毎分ごとの起動もされませんでした。 「crontab: installing new crontab」のメッセージも返って来ています。 /bat/sync.csh には、実行権はついており、 単独で走らせると $ /bat/sync.csh p1 p2 p3 : 動作します。 (p1, p2, p3 は引数を表現しています) 更に、 [/etc]$ ps -aux : root 489 0.0 0.0 1520 644 ? S Jan28 0:00 crond : root 21138 0.0 0.0 1520 672 ? S 23:20 0:00 CROND : などになっています。 何か、他の設定が必要なのでしょうか。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
環境変数 HOSTNAME が定義されていないからですね。 cshでは未定義環境変数を参照するとエラーです。 crontab 環境ではほとんどの環境変数が定義されません。crontabファイル中で、PATH等を定義されていたのでそのあたりはご存知かと思っていました。 HOMEと、SHELL=/bin/sh PATH=/usr/bin:/bin くらいだったかな。
その他の回答 (2)
- notnot
- ベストアンサー率47% (4900/10358)
>このcronファイルの中には、先ほどのuserの実行結果がrootの結果とともに刻一刻と入っていました。 ログに残っているということは実行されているのでは? >それでも、userでバッチが動いていない理由とすると・・・ 動いていないと判断した理由は何ですか? ls -lu /bat/sync.csh で、参照タイムスタンプをみるとどうなってますか?
お礼
夜遅くにありがとうございました。 いろいろと試してみて、解決できました。 ls -lu では、そのバッチの参照タイムスタンプは随時更新されていっていました。 もともと動いていないと判断したのは、そのsync.batの中で ログファイルを吐き出させるようにしていたためなのですが、そのログファイル名、 #!/bin/csh -f : set me=$0 set LOG="/tmp/$me:t.$HOSTNAME.log" のようにしているところがあり、 この"set LOG"の行でNG(その行から後ろが実行されていない)になっていました。 コマンドラインから実行した場合には上手く動いていたのですが、cronから呼び出すと動かなかったようです。 set LOG="/tmp/$me:t."`hostname`".log" こんな風に書き換えることで、crontabの設定からでも 動きました。 初歩的なことでお騒がせしました。 明確な理由は分からないですが、とりあえず動きました。 ありがとうございました。
- yambejp
- ベストアンサー率51% (3827/7415)
ログは正常にのこっていますか? rootでcronを登録してちゃんとうごきますか?
お礼
すみません、ログの場所は、 root[/var/log] ls -l cron* -rw------- 1 root root 32059 3月 8 00:49 cron -rw------- 1 root root 24955 3月 5 04:02 cron.1 ですね。 このcronファイルの中には、先ほどのuserの実行結果がrootの結果とともに刻一刻と入っていました。 それでも、userでバッチが動いていない理由とすると・・・
補足
夜遅くにありがとうございます。 rootユーザでは同じようにcron設定すると動きました。 ログが残っている場所はどこでしょう?
お礼
何度もありがとうございました。 見よう見まねで書いていたスクリプトのため、 >> crontab 環境ではほとんどの環境変数が定義されません。 ということが分かりませんでした。 勉強になりました。ありがとうございました。