dポイントプレゼントキャンペーン実施中!

いつも参考にさせてもらっています。
linux(Red Hat Enterprise Linux ES release 3 Apache/2.0.46)上でcrontabを設定したいのですが、
現在うまくいっておりません。

まず、autoindex.shというシェルを/home/foo/scripts/ディレクトレィに作成しました。中身は3行からなっていて

#!/bin/sh
cd /var/www/html/search/index
mknmz -a /var/www/html/test

です。telnet上でroot権限を使用し、./autoindex.shコマンド発行で正常に動作しました。

そこで、crontabに以下のように

# crontab -l
50 11 * * * root /home/foo/scripts/autoindex.sh

と設定したところ、

# more /etc/log/cron
Sep 27 11:50:01 intra crond[18280]: (root) CMD (root /home/foo/scripts/autoindex.sh )

とcronは決めていた時間(11時50分)に稼動しているようなんですが、mailを見ると

# mail -t

From root@XXX.com Wed Sep 27 11:50:01 2006
Date: Wed, 27 Sep 2006 11:50:01 +0900
From: root@XXX.com (Cron Daemon)
To: root@XXX.com
Subject: Cron <root@hoge> root /home/foo/scripts/autoindex.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>

/bin/sh: line 1: root: command not found

と、シェルがこけているようです。

何か解決のヒントがありましたら、ぜひ教えていただけないでしょうか。

A 回答 (3件)

rootで実行しているのに実行できないなら、やはりmknmzへのパスが通ってないのだと思います。


command not found と出るのは、パスが通ってない場合に出ますから。
実行権限がなくてこけるときはPermission Deniedと出るはずです。

シェルのmknmzをフルパスで書いてみたらどうなりますか?
    • good
    • 1
この回答へのお礼

何度もありがとうございます。mknmzをフルパス(/usr/local/bin/mknmz)で記入したら、見事にシェルが動きました。

パスを通すことも研究してみます。ありがとうございます。

お礼日時:2006/09/27 17:57

No.1です。



> mknmzコマンドはrootじゃないと実行できないからだめなのかなーと思いますが・・・

とのことですが、このcrontabはrootでログインして設定しているのではないのですか?
crontabはユーザごとに設定します。
(/etc/cron.allowや/etc/cron.denyが設定されていると、許可されたユーザだけが設定できますが)
そして、そのユーザの権限で、指定したコマンドが実効されます。
rootで動かしたいのであれば、rootでログインしてcrontabを設定する必要があります。

あと蛇足かもしれませんが、mknmzへのパスは通ってますか?
    • good
    • 0
この回答へのお礼

>crontabはrootでログインして設定しているのではないのですか?

そのとおりです。rootでログインしてcrontabを設定しています。

mknmzコマンドはrootでないと実行できないので、何とかしたいのですが。

お礼日時:2006/09/27 15:01

crontabの書式は、


分 時間 日 月 曜日 コマンド名
です。

> # crontab -l
> 50 11 * * * root /home/foo/scripts/autoindex.sh

これだと、「root /home/foo/scripts/autoindex.sh」というコマンドを実行するという意味になっていまい、rootというコマンドはないので、

>/bin/sh: line 1: root: command not found

と出ているのだと思います。

参考URL:http://www.linux.or.jp/JM/html/cron/man5/crontab …
    • good
    • 0
この回答へのお礼

ham_kamoさん、さっそくのご回答ありがとうございます。

> # crontab -l
> 40 13 * * * /home/foo/scripts/autoindex.sh

今度はrootを外してみましたが、またもNGでした。

mknmz: command not foundInterrupt

mknmzコマンドはrootじゃないと実行できないからだめなのかなーと思いますが・・・

お礼日時:2006/09/27 13:49

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