• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:crontabの設定について)

crontabの設定について

このQ&Aのポイント
  • crontabの設定についての質問です。CentOS6.2でIPアドレスの自動アップデートスクリプトを作成し、crontabを設定しましたがエラーが発生しています。
  • 質問者はCentOS6.2でIPアドレスの自動アップデートスクリプトを作成し、crontabを設定しましたが、エラーが発生しています。crontabの編集方法やスクリプトの内容を確認したいとのことです。
  • CentOS6.2でIPアドレスの自動アップデートスクリプトを作成し、crontabを設定しましたが、エラーが発生しています。具体的なエラーメッセージと設定内容がありますので、アドバイスをお願いします。

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

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.4

>crontab -e でユーザフィールドは省いてコマンド入力しましたが、メールに帰ってくるエラーは同じでした。 /bin/bash: root: command not found ですか?? >なぜかメールが届きません。rootのままで、届いていたのに、届かなくなりました。 標準出力に出ているモノが、そのままメールで通知される…かと思われますが、ちょっと謎ですね。 ウチで動いているのは…/etc/crontabに書き込んだものでpostfixも動かしていて… 内部のメールサーバへ配信されていますけどね。 # ただし、CentOS5.8とDebian 6.0ですが。 >例えば、DDNSの実行結果を/var/log/フォルダ内に適当なログを作り、そこに出力させるようコマンドの後などに付け足すことは出来るのでしょうか。 リダイレクトは可能でしょうから、ソレでファイルに落とす…とかでしょうかねぇ。 DDNSの更新はddclientを使うとか。 # RPMForgeにRHEL6.x向けのddclientあるようですし。 # ちなみにウチではddclientはDebian側で動作していて、切れたりすると通知メールが上がってきますね。 >#!/usr/local/bin/perl (which perl 実行結果 /usr/local/bin/perl と表示がでたのでそれに従いました) 自分でperl入れたのでしょうか? CentOSのパッケージなら/usr/bin/perlかと思われますが。

shibushijuko
質問者

お礼

回答頂き、ありがとうございます。 cornのログを見ると、プロセスとしては、問題なく実行されているようです。 問題はスクリプトの中身のようです。 スクリプトでは /usr/local/bin/perl としたのは、ln -s /usr/bin/perl /usr/local/bin/perl を実行したためです。そのため、Which perlを実行すると、シンポリックリンクを貼った階層が表示されます。 perl本体は、/usr/bin/にあるので、スクリプトを/usr/bin/perl に戻しました。 それとwgetが/usr/binにあったにもかかわらず、スクリプト内では /usr/local/binにしていました。その内容も変更しました。結果、やはり同じでメールも届かないし、スクリプト内で記載しているddns.log に結果を出すよう指定しているにもかかわらず、ログがありませんでした。 以前、Vinelinux4.2でこのスクリプトを使ってcrontabに登録したときは、/var/log/ddns.logが自動生成され正常にアップデートが成功している記録が見れました。 スクリプトの記載ミスか何かの問題だと思います。 もう少し、頑張ってみます。 わからなければ、ほかの自動更新スクリプトを見つけるか、ddclientなどを導入してみます。 ありがとうございました。

shibushijuko
質問者

補足

スクリプト使用はとりあえずやめて、下記操作をしました。 vi /var/log/result.log (空のまま保存) chmod 700 /var/log/result.log crontab -e を実行して下記内容を貼り付ける。 */10 * * * * wget -O - "更新サイトアドレス=ドメイン名&pw=xxxxx" >> /var/log/result.log 10分後に、下記内容がログに記載される。 <html><body> <a href="http://xxx.xxx/">xxx.xxx.jp</a><br> SUCCESS: xxx.xxx.xxx.jp <= [ xxx.xxx.xxx.188 ]<br> IPアドレス更新完了.<br>※IPアドレスに変更がありませんため、パスワードはチェック しておりません。<br> 2012/04/26 19:30:01<br> <input type="button" value="閉じる" onclick="window.close();"> </body></html> 10分枚に更新されるよう設定しました。ログにも更新内容が記載され続けています。なぜかメールは届きません。もっともメールでたくさんログが送られて来るのもこまりものですが。 とりあえず、これで良しとしようと思います。 ただ、PWが平分で流れるのが心配です。 また何かいい方法があるか調べてみます。 ご回答頂いた方々に感謝申し上げます。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.3

>/etc/crontab これを実行すると -bash: /etc/crontab: 許可がありません ただの設定ファイルですから当たり前です。 crontab「コマンド」は別にありますし。 # って昔おんなじような回答したことがあったような気がするな…。 crontab「コマンド」を実行した場合は指定されたユーザ(ユーザ指定していなければcrontabコマンドを実行したユーザ)権限で、記述したコマンドを実行することになります。 /var/spool/cron/以下にファイルが作成されます。 # 実際のパスはディストリビューションによります。 /etc/crontabはシステムに登録されたもので、crontabコマンドでの操作とは関係ありません。 そんなワケで実行ユーザを指定するフィールドがあります。 # 設定ファイルですから「実行」とかはありません。 # 「/etc/fstabを実行」とかしませんよね? man 1 crontab man 5 crontab man crontabs とか参照して下さい。 # CentOS6.2で確認。crontabsパッケージやanacronパッケージとか入っていたりはしますが。 >少し気になるのは、crontabe -eの場合、コマンドラインだけ記載すべきなのでしょうか。 最初に起動時、空白だったので、SHELL,PATH,MAILTO,HOME及びrun-partsの内容を貼り付けましたが、正しい操作だったのでしょうか。 SHELL,PATH,MAILTO,HOMEの設定は問題ないでしょうが… run-partsが正しく動作するかは…どうなんでしょうかねぇ。 正しく設定すればcrontab -eでもrun-partsは動作する…かな。 試したことはありませんが。 # その際、/etc/crontabとは書式が異なりますのでご注意を。 rootで/etc/crontabを編集 =>システム全体の設定。実行ユーザの指定がある。 一般ユーザ(ユーザ名がuser)で/etc/crontabを編集 =>パーミッション関係でたぶん蹴られる。 rootでcrontab -e =>/var/spool/cron/root に書き込まれ、rootユーザ権限で動作する為、実行ユーザの指定は不要。 一般ユーザ(ユーザ名がuser)でcrontab -e =>/var/spool/cron/user に書き込まれ、userユーザ権限で動作する為、実行ユーザの指定は不要。

shibushijuko
質問者

お礼

回答いただき、ありがとうございます。 crontab -e でユーザフィールドは省いてコマンド入力しましたが、メールに帰ってくるエラーは同じでした。  Vinelinux使用当時は、単純にvi /etc/crontab でユーザフィールド及びコマンドを記載して正常に動作していたので、あまりcrontabのことを深く理解せず便利ツール程度にしか思っていませんでした。 CentOS6.2では、ネットで調べたところcronプロセスのほかに、anacronプロセス(遅延実行)も動作しているため、設定しても時間通り動作しないことがあると記載がありました。/etc/cron.d , /etc/crontab , /var/spool/cron (crontab -e) に設定することで時間通り動作するとの説明もあったのですが、ややこしかったのでcronie-noanacronのインストールとcronie-anacronのアンインストール実行しました。 この場合、単純に/etc/cron.d/0hourly,/etc/cron.d/dailyjobs にコマンドを従来どおり記載することでうまく動作するとありましたので、 /etc/cron.d/0hourlyに下記内容で記載しました。 cronログで見ると定期的時間通り、定期的に実行されているようですが、なぜかメールが届きません。rootのままで、届いていたのに、届かなくなりました。 ただ、awstatsのコマンドのほうは、3時間に一回の実行設定ですが、正常に動作しているメールが届きます。 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ 01 * * * * root run-parts /etc/cron.hourly # DDNS */10 * * * * root perl /usr/ddns/ipchk.pl 00 5 * * 0 root rm -f /usr/ddns/CRT_IP.dat # awstats 00 0-23/3 * * * root /root/awstats.sh 例えば、DDNSの実行結果を/var/log/フォルダ内に適当なログを作り、そこに出力させるようコマンドの後などに付け足すことは出来るのでしょうか。

すると、全ての回答が全文表示されます。
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

http://d.hatena.ne.jp/geek_it/20100121/1264097935 にそのまんまの事例が書かれていますね。

shibushijuko
質問者

お礼

ご指摘ありがとうございます。 crontab -e の場合、ユーザフィールドを排除すると言うことは知りませんでした。 下記内容に変更しました。 # DDNS */10 * * * * perl /usr/ddns/ipchk.pl 00 5 * * 0 rm -f /usr/ddns/CRT_IP.dat

すると、全ての回答が全文表示されます。
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

>エラー内容 /bin/bash: root: command not found 「rootってコマンドが見つかりません。」 と言っています。 /etc/crontabとcrontab -eで編集するファイルとでは書式が異なりますがその辺りは理解されています? /etc/crontabでは実行ユーザを指定するフィールドがあったりしますけど。 # コマンドと認識されてしまったrootがソレにあたるかと。

shibushijuko
質問者

お礼

ご回答、ありがとうございます。/etc/crontabとcrontab -e の違いは、実行ユーザを指定するか、しないかと言うことでしょうか。 /etc/crontab これを実行すると -bash: /etc/crontab: 許可がありません、とエラーが出ます。権限を確認すると以下のとおりでした。 root権限でログインして実行しているのですが? -rw-r--r-- 1 root root 457 4月 24 23:43 2012 crontab crontab -e でユーザフィールを削除して下記のとおりしました。 少し気になるのは、crontabe -eの場合、コマンドラインだけ記載すべきなのでしょうか。 最初に起動時、空白だったので、SHELL,PATH,MAILTO,HOME及びrun-partsの内容を貼り付けましたが、正しい操作だったのでしょうか。 コマンドでは10分ごとに実行するよう設定して、スクリプトでは、ログの内容を /var/log/ddns に記載するようになっていると理解しています。 しかし、10分経過しても /var/log/無いにはddsnすら存在しないです。 MAILTOは空白にしました。あまりにもメールが届くので。 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO= HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly # DDNS */10 * * * * perl /usr/ddns/ipchk.pl 00 5 * * 0 rm -f /usr/ddns/CRT_IP.dat

すると、全ての回答が全文表示されます。

関連するQ&A

  • crontabの設定ができない(編集画面が出ない)

    CentOS5.2を使っています。 crontabの設定を行おうと、 # chkconfig --list crond crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off で確認後、$ crontab -e  としましたが、 no crontab for aaabbb - using an empty one と出て、編集ファイルが表示されません。 $ crontab -l  とすると no crontab for aaabbb と出、 # crontab -l  も    no crontab for root  となります。   念のため # chmod 777 /etc/crontab としてみましたが、結果は同じです。 $ less /etc/crontab でファイルを開くと ------------------------ SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly /etc/crontab (END) ---------------------- となっています。 Webで設定例を検索すると、no crontab for aaabbb - using an empty one の下に crontab: installing new crontab と出ると記載されているのですが、 私の場合、このような表示や動きは出ませんが、どのようにして crontab を設定していくのでしょうか。どうか宜しくお願いします。

  • fedoraのcrontabについて

    linux初心者です。 今、fedora16で「新Linux/UNIX入門」という本を使って、Linuxを勉強しています。 crontabについて一つわからないことがあります。 本では/etc/crontabに 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly の記述があると書かれてありますが、自分のパソコンで$ cat /etc/crontabを実行してみると SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed となり、記述されているはずのものがありません。 ここではなく、/var/spool/cron/rootの方に記述されているかと思って、その中も見てみたのですが、記述されていそうにありません。 どこにこれは記述されているのでしょうか? いろいろといじくっているうちに、誤って自分で消してしまったのでしょうか? どなたかご回答よろしくお願い致します。

  • /etc/crontabに記述してあるのに一部のスクリプトの実行結果が通知されない

    RedHat9を使用しています。 # cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ 00,12,24,36,48 * * * * root run-parts /etc/cron/networkDown.cron 05 * * * * root run-parts /etc/cron/top_c.cron # ls -l /etc/cron/ drwxrwxr-x 2 root root 4096 1月 13 01:38 networkDown.cron/ drwxrwxr-x 2 root root 4096 11月 15 14:23 ntp.cron/ drwxrwxr-x 2 root root 4096 11月 26 14:24 top_c.cron/ # ls -l /etc/cron/networkDown.cron -rwxr-xr-x 1 root root 481 2月 28 2004 diskSpaceCheck.cron* -rwxr-xr-x 1 root root 2938 8月 5 15:33 networkDown.cron* -rwxr--r-- 1 root root 206 11月 30 23:56 popAccessCheck.cron* -rwxr--r-- 1 root root 543 1月 13 01:37 printSeverCheck.sh* となっていますが何故か/etc/cron/networkDown.cronディレクトリだけの実行結果がroot宛に通知されません。 /etc/cron/top_c.cronの実行結果はroot宛に通知されます。 # tail -f /var/log/cron には # crontab -l で表示される分のcronの処理結果しか吐かれないようです。 どうして、一部のディレクトリだけの実行結果が通知されないのでしょうか?

  • バックアップの自動化に出てくる run-parts とは?

    Fedora Core2 にてバックアップの自動化を調べていて、crondを見つけたのですが、run-partsの意味が良くわかりません。コマンドなのかと思って調べてみましたが、よくわかりませんでした。run-partsとはどういった意味があるのでしょうか。 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly

  • Puppy Linuxで cron を使用するには

    Puppy Linux で ダイナミックDNS(DDNS)を使う準備のために,cron を使った定時処理の仕方をテストしていますが,機能しません.ご教授ください.   1)OSは,PuppyLinux4.3.1を使用しています. DDNS は,ieServer のサイトを利用.WEBブラウザ上では,DNSの更新はできています.数分後,ping コマンドを,サブドメイン名で実行すると名前が解決されています.      2)ps コマンドで見ると,デーモンが動いていないようなので /usr/sbin/crond とキーインし,デーモン起動します.   3)「ieserver専用IPアドレス更新スクリプト」ページ(http://ai-line.com/linux/ddns.html#6)の内容を参考に,Perl のプログラムを /etc/DDNS ディレクトリのダウンロードし,変数をセットし,このプログラム単体では,正常動作を確認しています.   4)エディタで,上のサイトの設定ファイルを, /var/spool/cron に root とう名称で作成しました.(下) ---------------------------------------- SHELL=/bin/bash PASH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run - parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron/monthly # Dynamic_DNS */10 * * * * root perl /usr/DDNS/IP_Set_ie.pl ---------------------------------------- いくら待っても,IP_Set_ie.pl が実行された様子がなく(old_ipのタイムスタンプが変化なし),DNSの更新がされません. どのような,間違いがあるのであしょうか? ご教授願います.

  • Fedora11 crontab 設定エラー

    Fedora11「crontab -l」が「コマンドが見つかりません」になる。 (Q1) Fedora11で、cron を利用したく動作テストしています。 crontab は、/etc内にあります。 [root@betasei etc]# ls -l crontab* -rwxrwxrwx. 1 root root 420 2011-05-18 10:36 crontab テスト用スクリプトです。 [root@betasei etc]# cat test.sh echo xxxxxxxx gedit crontab で次のように編集しました。 [root@betasei etc]# cat crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin/:/etc/ MAILTO=root HOME=/ # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR #sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * command to be executed 1 1 * * * /etc/test.sh 設定確認すると、次のようにエラーになります。 [root@betasei etc]# ./crontab -l ./crontab: line 13: 1: コマンドが見つかりません [root@betasei etc]# 1 1 * * * /etc/test.sh ここのところを ./test.sh にしてみたりしてもダメです。 どうしたらよいのでしょうか。 (Q2) ところで、crontabの編集は、ターミナルやろうとして、 crontab -e と実行すると、viか何かの空白編集画面が出ます。 上記 gedit crontab の画面のように初期値が出ません。 gedit crontabで編集してもよいのですね。 (Q3) /etc/crontab は、テキストファイルですね。 でも、このcrontabは実行ファイルですね。 ./crontab -l どうなってるですか。 初歩的な質問ですみません。

  • crontabの自動実行について (Debian3.0)

    OSはDebian GNU/Linux 3.0です。 /etc/cron.daily の中にviで記述した下記のものを 保存しました。ファイル名back.sh #!/bin/sh rsync -acouv --stats /home/www /backup/back-all ;; しかし、自動実行できていませんでした。 www、back-all共に実在するディレクトリです。 crontabは下記のとおり、初期のままです。 SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command 25 6 * * * root test -e /usr/sbin/anacron || run-parts --report /etc/cron.daily 47 6 * * 7 root test -e /usr/sbin/anacron || run-parts --report /etc/cron.weekly 52 6 1 * * root test -e /usr/sbin/anacron || run-parts --report /etc/cron.monthly # 何か間違いがあるのでしょうか?

  • cron設定で電源のOFFができません。

    cron設定で電源のOFFができません。 cent OS 5.5 で自宅サーバーを立上げ勉強中です。 サーバーの電源を自動で18:00にONにして翌日の7:00にOFFにしたいと思います。 いろいろなホームページを参考にさせていただき、電源のONはパソコンのBIOS設定、OFFは"cron"を使うことできることがわかりました。 電源のONはパソコンのBIOS設定でできましたが、OFFができません。 設定は以下としています。 [root@Linux ~]# vi /etc/crontab CSHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly 0 7 * * * shutdown -h now #追加 [root@Linux ~]# /etc/rc.d/init.d/crond restart [root@Linux ~]#chkconfig crond on [root@Linux ~]# chkconfig --list crond crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@Linux ~]# /etc/rc.d/init.d/crond status crond (pid xxx) を実行中... 設定時間になっても電源がOFFになりません。 [root@Linux ~]# shutdown -h now ではOFFにできます。 (cent OS 5.5 をインストールしているパソコンは 富士通 FMV DESKPOWER CE18B 2002 年製です) よろしくお願いします。

  • crontab -e コマンドで編集してもCronが動作しません。

    testユーザーで手動でコマンド実行すると正常に動作するのですが、 crontab -eで、下記のようにCronを登録しても動作しません。。 00 12 * * * /var/www/html/bin/cron.sh args1 /var/log/cronを見ても Jun 19 12:00:01 web1 crond[3095]: (test) RELOAD (cron/test) というように、RELOAD となりまりコマンドが実行してくれません。。 Jun 19 13:01:01 web1 crond[9116]: (root) CMD (run-parts /etc/cron.hourly) というように、CMDが出ているのですが。。

  • crontabでのシェル自動実行がNG

    いつも参考にさせてもらっています。 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 と、シェルがこけているようです。 何か解決のヒントがありましたら、ぜひ教えていただけないでしょうか。

このQ&Aのポイント
  • ハガキクリエイターの宛名表記で飲食店の店名を表記する方法をご教示いただけませんか?
  • ピクサスはがきクリエイターで宛名表記する際、飲食店の店名を名前の右横に表記する方法をご教示ください。
  • ハガキクリエイターで宛名表記する際、飲食店の店名を名前と一緒に表記したいですが、方法がわかりません。助けてください!
回答を見る

専門家に質問してみよう