• ベストアンサー

cronが動かない

cron初心者なのでお願いいたします。 fedora5で以下のようなCronを動かそうとしています。 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin HOME=/htdocs/program 45 18 * * * perl U9901.pl rootで作成し、/var/spool/cronのrootの実行権限は755になっています。 しかし実行されません。 編集後、crondは再起動しています。 どのような原因が考えられますでしょうか? 過去ログも見たのですが、それらしいものが無かったので質問させてください。 お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

No.3です。 >(root) BAD FILE MODE (cron/root) crontabファイルのモードがおかしいのかも。 ls -l /var/spool/cron の結果を教えてください。 ちなみにうちのCentOSでは下記の通りです。 # ls -l /var/spool/cron/ -rw------- 1 root root 1401 Aug 11 16:19 root

papope
質問者

お礼

ご回答ありがとうございます。 /var/spool/cronの結果ですが、あるサイトで/var/spool/cron配下の ファイルは755に設定しろとの記載があったので、そのようにしました。 教えていただいたとおり600に設定しましたら、cronが実行できました。 色んなサイトを参考にしましたが、間違った方法を説明している所も あるみたいですね。 今後、気をつけて参照したいと思います。 (OSのデストリビューションにも依るのでしょうが・・・) ありがとうございます。 助かりました。

その他の回答 (4)

  • Lean
  • ベストアンサー率72% (435/603)
回答No.5

>(root) BAD FILE MODE (cron/root) >/var/spool/cronのrootの実行権限は755 if ((statbuf->st_mode & 07733) != 0600) {     log_it(fname, getpid(), "BAD FILE MODE", tabname);     goto next_crontab; } パーミッションを600(644でも可)にしてみてください。

papope
質問者

お礼

ご回答ありがとうございます。 パーミッションを600にすることにより実行できました。 助かりました。 ありがとうございます。

回答No.3

どこのcrontabに書きましたか? cronのログには起動の痕跡が出ていますか?

papope
質問者

補足

ご回答ありがとうございます。 crontabはrootでcrontab -eで作成していますので 私の環境の場合、/var/spool/cron下に作成されています。 cronのログに実行の形跡がありません。 今気づいたのですがcrondを再起動したときに以下のメッセージが 出ています。 (root) BAD FILE MODE (cron/root) 何かしらでCronのファイルが悪いのでしょうか? 参考までに今現在のcrontabのファイルを載せさせていただきます。 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin HOME=/aaa/htdocs/PPro MAILTO=kaihatu 35 16 * * * /usr/local/bin/perl /aaa/htdocs/PPro/U9901.pl>/tmp/debug.log 2>&1 お願いいたします。

  • Lean
  • ベストアンサー率72% (435/603)
回答No.2

cronからメールきていますか? 来ている場合、そのメールの内容はどうのようなものですか? また 45 18 * * * perl U9901.pl 1>/tmp/debug.log 2>&1 のようにして標準出力、標準エラー出力をファイルにリダイレクトした場合、そのファイルに何か出力されていますか? ちなみにコマンドラインからは正常に実行出来ているんですよね?

papope
質問者

補足

ご回答ありがとうございます。 Cronからのメールは来ていません。 過去に何回か試験した時のメールは来ているんですが、 今の状態ではメールすら来ていません。 >45 18 * * * perl U9901.pl 1>/tmp/debug.log 2>&1 も何も出力されません。 なんなんでしょう?(;;) コマンドラインからの実行はできています。

  • Lean
  • ベストアンサー率72% (435/603)
回答No.1

>45 18 * * * perl U9901.pl perlコマンドがU9901.plが存在するディレクトリで実行されれば動作するだろうが、cronで実行する場合U9901.plが存在するディレクトリ上でperlコマンドが実行されるわけないのでU9901.plを絶対パス指定で指定する。 出来れば、perlも絶対パス指定でしておいた方がいいかもしれない。

papope
質問者

補足

ご回答ありがとうございます。 上記のことは、質問する前にやってみたのですが駄目でした。 PATHとHOMEで指定しているので問題ないと思い、削除しました。

関連するQ&A