- ベストアンサー
crontabでのシェル自動実行がNG
- Linux(Red Hat Enterprise Linux ES release 3 Apache/2.0.46)上でcrontabを設定しようとしていますが、シェルがこけてしまいます。
- シェルスクリプトは正常に動作し、cronも指定した時間に稼働していますが、cron内でシェルがエラーとなります。
- エラーメッセージからは具体的な解決方法が分かりません。解決のヒントを教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
rootで実行しているのに実行できないなら、やはりmknmzへのパスが通ってないのだと思います。 command not found と出るのは、パスが通ってない場合に出ますから。 実行権限がなくてこけるときはPermission Deniedと出るはずです。 シェルのmknmzをフルパスで書いてみたらどうなりますか?
その他の回答 (2)
- ham_kamo
- ベストアンサー率55% (659/1197)
No.1です。 > mknmzコマンドはrootじゃないと実行できないからだめなのかなーと思いますが・・・ とのことですが、このcrontabはrootでログインして設定しているのではないのですか? crontabはユーザごとに設定します。 (/etc/cron.allowや/etc/cron.denyが設定されていると、許可されたユーザだけが設定できますが) そして、そのユーザの権限で、指定したコマンドが実効されます。 rootで動かしたいのであれば、rootでログインしてcrontabを設定する必要があります。 あと蛇足かもしれませんが、mknmzへのパスは通ってますか?
お礼
>crontabはrootでログインして設定しているのではないのですか? そのとおりです。rootでログインしてcrontabを設定しています。 mknmzコマンドはrootでないと実行できないので、何とかしたいのですが。
- ham_kamo
- ベストアンサー率55% (659/1197)
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 と出ているのだと思います。
お礼
ham_kamoさん、さっそくのご回答ありがとうございます。 > # crontab -l > 40 13 * * * /home/foo/scripts/autoindex.sh 今度はrootを外してみましたが、またもNGでした。 mknmz: command not foundInterrupt mknmzコマンドはrootじゃないと実行できないからだめなのかなーと思いますが・・・
お礼
何度もありがとうございます。mknmzをフルパス(/usr/local/bin/mknmz)で記入したら、見事にシェルが動きました。 パスを通すことも研究してみます。ありがとうございます。