Cronの設定ファイルについて

このQ&Aのポイント
  • Cronの設定ファイルについての質問です。具体的には、ファイル /var/spool/cron/root の内容について説明してほしいと思っています。
  • 私は * * * * * root run-parts /var/www/html/xxx/zzz.php という設定で動かそうとしましたが、うまくいきませんでした。他の人は * * * * * php /var/www/html/xxx/zzz.php という設定で動かしていました。後者の設定方法について教えていただきたいです。
  • さくらインターネットのVPS 4Gを使用して、CentOS上でPHPを実行する際のCronの設定ファイルについて質問があります。具体的には、ファイル /var/spool/cron/root の内容について詳しく教えていただけますか?
回答を見る
  • ベストアンサー

Cronの設定ファイルについて

仕事の関係、サーバーでCronをいじることになりました。サーバー構築は素人なため手探りの状態でうまくいかず、他社の方に設定していただいたのですが関係上質問ができないためこちらでお伺いします。 ファイル /var/spool/cron/root に関しまして (1) * * * * * root run-parts /var/www/html/xxx/zzz.php (2) * * * * * php /var/www/html/xxx/zzz.php 私は(1)で設定していたのですが動かず、お相手は(2)の記述で動作させていました。 (2)のやり方についてWebで調べましたが見つかりません。解説お願いできますでしょうか。また(1)は全く見当外れな記述でしょうか。 よろしくお願いいたします。 <環境> サーバー:さくらインターネット VPS 4G  http://vps.sakura.ad.jp/ OS:  CentOS 動作対象プログラム:PHP

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

  • ベストアンサー
  • EF_510
  • ベストアンサー率50% (306/604)
回答No.2

/var/spool/cron/root の記述ですよね? >* * * * * root run-parts /var/www/html/xxx/zzz.php これだと/etc/crontabの記述「風」ですが動きません。 ユーザー用のcron設定なので最初にユーザー名(root)を書いてしまうと、root というコマンドをrun-parts /var/www/html/xxx/zzz.php という引数で呼び出す記述になってしまいます。 同じ理屈で(2)はphpを/var/www/html/xxx/zzz.phpを引数にして呼んでいますから動作が期待できます。

ikataro
質問者

お礼

ありがとうございます。 すると2番目には言語名が入るということですかね。perlとかrubyとか… まあ直接書いちゃ行けないので気にしても仕方がない所かもしれませんが。 いずれにしても間違いとわかって良かったです。

その他の回答 (3)

  • 774danger
  • ベストアンサー率53% (1010/1877)
回答No.4

phpというユーザの権限で/var/www/html/xxx/zzz.phpを動かしたいなら、(2)のように記載します run-partsはそのディレクトリ配下にあるスクリプトを全て実行するコマンド もし、/var/www/html/xxx/zzz.phpというディレクトリがあって、そこにスクリプトがいくつか置かれているのであれば(1)の表記でも正しいですが、zzz.phpがファイルなら書式がおかしいことになります run-partsコマンドが何か理解できていないのでは? http://www.linuxquestions.org/questions/linux-newbie-8/what-does-the-run-parts-mean-in-crontab-382120/

ikataro
質問者

お礼

ありがとうございました。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

> すると2番目には言語名が入るということですかね。perlとかrubyとか 違います。 #1にあるように 分 時 日 月 曜日 コマンドライン です。 分→ * 時→ * 日→ * 月→ * 曜日→ * コマンドライン→ php /var/www/html/xxx/zzz.php で、phpスクリプトの/var/www/html/xxx/zzz.phpを実行するのでphpコマンドを使っている、というものです。 たまたま言語を処理するコマンドと言語名が一緒なだけです。 「言語」が入るのなら、Cで書いてコンパイルしたものは、なんて書けばいいと思います?

ikataro
質問者

お礼

ありがとうございました。

  • notnot
  • ベストアンサー率47% (4844/10253)
回答No.1

crontab ファイルの書式は2種類あって、 (1) /etc/crontab ファイルに書く書式 分 時 日 月 曜日 実行ユーザ名 コマンドライン (2) crontab -e コマンドで書き込む書式 分 時 日 月 曜日 コマンドライン と、実行ユーザ名の有無が違います。(1)はシステムファイルに書き込むので、実際にコマンドをどのユーザ権限で実行するのかの指定が必要。(2)はcrontab -e コマンドを実行するユーザの権限で登録したコマンドが実行されます。 /var/spool/cron/root は、crontab コマンドが使用するファイルですが、ここに直接書いてはいけません。crontab コマンドを使って変更します。 詳しくは、man crontab と man 5 crontab を熟読のこと。

ikataro
質問者

お礼

ありがとうございます。 やはり根本的に間違ってるようですね。 きちんと勉強します…

関連するQ&A

  • さくらVPSでcron指定はsh? php?

    これまで別のレンタルサーバで動作していたcronをさくらVPSでも動作させたいのですがうまくいきません。 ■これまで(レンタルサーバ) 1.cronにshファイルを指定 2.shファイル cd /var/www/★★ /usr/local/bin/php -d include_path='.:./●●.php ■今回(さくらVPS) /etc/crontab/ 05 7 * * * root /usr/bin/php /var/www/■■.sh ・どうしたら動作するでしょうか? ・/etc/crontab/の指定先は「phpファイル」「shファイル」の何れを指定するのでしょうか?

  • cronのメール送信設定

    /var/spool/cron/crontabs/root にいくつか処理を書いて、動かしていますが そのうち一つだけ、出力を違う宛先にメールで送りたいのですが MAILTO=root の部分では全体の指定しか出来ませんか?

  • 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 年製です) よろしくお願いします。

  • phpファイルをcronで動かすには?

    /var/www/html/test.phpというファイルを毎日午前6時に動かしたい(たたく?)のですが、cronをどのように設定したらいいのか分かりません。サーバーはcentos5でroot権限をもっています。 http://www.server-memo.net/tips/crontab.html こちらを参考にしているのですが、どこから手をつけていいのかすら分かりません。 /etc/以下には次のようなファイルやフォルダがありました。 cron.d cron.daily cron.deny cron.hourly cron.weekly crontab これをどのようにして利用したらいいのでしょうか?

  • cron設定についてです。

    こんばんは。開発初心者の者です。 今、データベースから引っ張って来たデータを csv作成するphpプログラムファイルを 1日1回cronなりで設定して 自動で動かしたいと思っています。 しかし、php本体を置いているサーバー(仮称:Aサーバー)と csvを作成するプログラムファイルを 置いているサーバー(仮称:Bサーバー)が違うため cron設定にかなり手こずっています。 http://のURL形式でcsvを作成するphpを実行できるので、 Cronがwgetを使いURL形式で読み込んで できそうだということがわかりました。 早速、色々調べて手始めにwgetをやってみたのですが、 ~DNSが…サービスが…不明です。(うろ覚えですが) のような記述が出てwgetすら実行できません。 BASIC認証などもあり、 元々の読み込みURLはhttps://になってます。 (csvを書き出すphpファイルの階層はhttp://になってます) BASIC認証対策用記述もして何度も試みてみましたが、 一向にできません。 開発をしている別環境ではphp本体、 csv作成をするphpファイルともに 同じサーバーに置いてあり、こちらは * * * * * /usr/local/bin/php /…/…/~.phpのような 通常のcron、 * * * * * wget --http-user=** --http-passwd=*** http://~ のようなwgetを使用したcron設定ともに 普通に自動実行ができますが…。 Aサーバー、Bサーバーともにpoderosaを使用して cron設定のコマンドを書いてますが、 何が悪いのかさっぱりわかりません。 php本体を置いてあるAサーバー側でcronの記述するのが たぶん正しいかと思うのですが、 どちらでcron設定するのが正しいのでしょうか? また、何故今wgetができないのかをお聞きしたいです。 サーバーは全く触っていないため仕組みはよくわからないです。 恐らくSSL形式になっていると思います。 何が原因と考えられるでしょうか? また、何かcronなどの他に、このcsv書き出しをするphpを 自動で動作させる方法などもないでしょうか? 知識不足、説明下手で申し訳ないですが、 どうしても解決したいので回答よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPからcronを編集したい

    ブラウザから時間を指定してリクエストを投げると下記PHPを実行するプログラムがあります。 shell_exec("echo {$pass} | sudo -S sh -c 'cat {$root_dir}/craw/crontab.txt > /var/spool/cron/crontabs/{$cron_user}'"); shell_exec("echo {$pass} | sudo -S chown {$cron_user}:crontab /var/spool/cron/crontabs/{$cron_user}"); shell_exec("echo {$pass} | sudo -S chmod 600 /var/spool/cron/crontabs/{$cron_user}"); 実行はちゃんと行われて、/var/spool/cron/crontabs/userの中身もちゃんと期待したとおりに変更されています。 しかし、いくら待っても登録したjobが実行されることはありません。(/var/log/syslogを見ても実行された形跡はありません) shell_exec("echo {$cron_pass} | sudo service cron restart"); を付け加えてみても結果は同じでした。 crontab -eで編集→保存とするとちゃんと反映されるようです。 どのようにすればPHPからcronを登録できるでしょうか。 よろしくお願い致します。

  • cronについて教えてください

    こんばんは。 Redhat Linuxを使用しております。 今回Cronで不要ファイルの削除を設定したいのですが、 その方法でわからない点があります。 「/etc/cron.monthly、cron.weekly、cron.daily、cron.hourly」 などの配下にシェルを置き、「/etc/crontab」ファイルの記載から これらシェルを呼び出すと思っています。 で「/var/spool/cron/user」ファイルなるものがありますが、 これの使用用途が分からず・・。 「/var/spool/cron/user」は必須の設定項目でしょうか?。 すみませんがアドバイスお願いします。

  • /var/spool/cron/rootって何のバ

    /var/spool/cron/rootって何のバッチ処理ですか?

  • さくらVPS cronでphp

    centos6 さくらVPS cronでphpを実行したいのですが、うまくいきません? vi /etc/crontab    ↓ 44 * * * * /var/www/html/oms-main2/end.php ちなみにend.phpは、手動では動きます。 cronlog  ↓ Apr 15 10:44:01 www32258ue CROND[6787]: (root) CMD (/var/www/html/oms-main2/cron.php) 宜しくご教授お願い致します。

  • Cronの設定ディレクトリについて

    こんばんわ。教えてください。 Cronを設定するディレクトリって複数存在しているのでしょうか? というのは、色んなWebなどで調べたところ以下の3つを確認しました。 これは、すべてCronを指定するためのディレクトリなのでしょうか? それとも、何か違いがあるのでしょうか?もし同一の昨日であれば、 なぜ複数のディレクトリが存在しているのでしょうか? (1)/etc/crontab (2)/var/spool/cron/root (3)/usr/lib/crontab ※ディレクトリが違っている場合には、ご指摘願います。 ご回答を宜しくお願いします。 なお、Linuxに限らずだと思うのですが、今回はLinuxという環境で質問させてください。 確認したOSはRed Hat Linux ES 2.1です。