cronについて

時々、cron(クローン)とは何ですかと聞かれることがあるので、どんな機能なのか簡単に説明します。
cronが使えると色々便利なことがあります。

cronって何?

一言で言うと、タイマー機能のことです。
Webサーバーの機能の1つで、指定した時間になったら、指定したコマンドを実行してくれます。 もちろん、定期的に同じ処理を繰り返し行うこともできます。
ビデオ予約を思い浮かべてください。
  • x月x日xx時xx分、チャンネルAの録画を開始する
  • 毎週z曜日のドラマBを録画する
  • etc.
という具合に予約しますよね。

これと同じで、
  • x月x日xx時xx分、○○コマンドを実行する
  • 毎週z曜日のyy時xx分、○○コマンドを実行する
  • etc.
という具合に予約し、目的の処理を自動で実行させます。

どんな時に使うの?

定期的に、自動で、何かを処理したいときcronを使います。
  • 毎日x時になったらメールを配信したい
  • 毎時y分にTwitterにつぶやきを投稿したい
  • 一週間に一度、データベースに登録したデータをバックアップしたい
  • 毎月末に支払いを行いたい
  • etc.
これらの処理は、手動でも行えますが、大部分の人は自動化したくなるでしょう。 ここで、cronの出番となるわけです。
サーバーで自動的に動かしたいコマンドは人それぞれだと思います。自分が何を自動化したいか思い浮かべてみてください。

ソフトウェアを自動実行する場合、まずはサーバーにインストール

サーバーのファイルのコピー、データベースのバックアップ、といった既にサーバーにある機能を自動実行したい場合は、ソフトウェアをインストールする必要はありません。
ですが、ステップメールを配信したい、Twitterに投稿したい、などソフトウェア(ツール)の機能を自動実行したい場合、まずは使いたいソフトウェア(ツール)をサーバーにインストールします。
自動実行を想定しているソフトウェアなら、自動実行するためのスクリプトファイルが各ツールに用意されています。
そう、このスクリプトファイルをcronで定期的に実行すればよいのです。
どのファイルを実行すればよいかは、各ツールのヘルプやマニュアルに書かれています。分からない場合は販売元に問い合わせましょう。

次はcronを設定します

cronに登録して、自動実行させたいファイルがわかったら、いよいよcronへ実行を登録します。
しかし、ここで注意が必要です。cronはサーバーの機能だということです。ステップメールや自動投稿などのツールの機能ではないということです。

炊飯器のタイマー機能を利用してご飯を炊く時を思い出してください。
炊飯器でお米を炊きたい場合、お米を洗い、適量の水を入れ、炊飯器にお釜を入れ、タイマーをセットします。
cronを使った自動実行に置き換えると、炊飯器がサーバー、お米がソフトウェアということになります。
炊飯器Aで米Aを炊く(サーバーAでツールAを使う)こともあれば、同じ炊飯器で米Bを炊く(サーバーAでツールBを使う)こともあります。
またお米Aを炊飯器Aで炊く(サーバーAでツールAを使う)ことも、炊飯器Bで炊く(サーバーBでツールAを使う)こともあります。

しかし、共通しているのは、タイマー機能は必ず炊飯器にあるということです。米にタイマー機能はありません。
つまり、自動実行機能cronはサーバーにあるのです。ツールではないのです。
炊飯器と米の例だと、何を分かりきったことを、と思われる方がほとんどでしょう。 しかし、サーバーとツールの話になると、こんがらがって分けが分からなくなってしまう人が出てくるのも事実です。

少しでも簡単に設定できるようにブラウザから設定できる機能を提供してくれているサーバーや、サーバーへの負荷をコントロールするため一定以上の利用を制限をしているサーバーもあり、ほとんどのサーバーが独自の設定方法を提供しているので、設定方法もまちまちです。 サーバーAでこう設定したから、サーバーBも同じだろう、というのは通じないと考えてください。
そして当然ですが、設定を誤ると、動いてくれません。
必ず使っているサーバーに合わせて設定してくださいね。設定の仕方はサーバーのヘルプやマニュアルに書かれています。 サーバーによっては、cronは使えないものもあります。 使えるけどサポート外のところもあります。この場合は自分で色々調べて設定していかなければいけません。

動かないときはブラウザから

cronの設定は結構難しいです。
慣れるとそうでもないのですが、初めての時は、動かないと泣きたくなるかもしれません。
結構分かりにくい項目をいくつか設定しなければいけません。その1つでも間違うと動かなかったりするので、原因の切り分けが難しいです。

もしcronを設定したのに、どうしても動かないという場合、まずはブラウザからスクリプトファイルを実行してみましょう。 ブラウザからスクリプトファイルへアクセスすれば実行できます。
スクリプトファイルのURLが何になるのかは、サーバーのヘルプやマニュアルを確認してください。
cronよりブラウザの方が敷居が低いので、動かしやすい場合が多いです。 また、エラーが起こった場合、ブラウザに表示されることもあるので、cronより確認が簡単なことが多いです。

ブラウザから実行して動かない場合、まずcronでも動きません。 ブラウザでも実行できない場合は、ソフトウェアの設定が何か間違っていないか確認してみてください。

ブラウザから動くようになったら、次はcronで動くように設定していきます。
通常、実行結果はメールで受け取れるので設定をしておくといいです。エラー内容もメールで送ってくれるので確認ができます。 サーバーのマニュアルに設定方法が載っていると思います。
実行間隔はテストが終わるまで、5分〜10分間隔で動かすのが良いかもしれません。 サーバーによっては30分、60分おきでないとダメなところもありますので、使っているサーバーに合わせて設定します。
cronで動かない場合、確認するポイントは普通、
  • スクリプトファイルのパーミッション
  • スクリプトファイルへのサーバーパス
  • はPerl、PHPといった言語のバージョン
この3つです。

ファイルのパーミッションは、サーバーのヘルプやマニュアルの通りに設定すれば動きます。
ですが、どうしてもうまくいかない場合、パーミッション(権限)を【777】に変更して動かしてみましょう。

もし実行しているはずなのに無反応なら、サーバーパス(単にパスとも言います)が違うのかもしれません。サーバーパスを確認しください。 サーバーパスはブラウザからアクセスするURLとは異なります。
これもサーバーのヘルプやマニュアルに書いてあります。 通常は【/home/public/・・・】というような形式です。サーバーパスには、実行するスクリプトファイルまで書いてくださいね。 中にはファイルを書かずに『動かない』と悩む人もいます。 実行するスクリプトファイルが【run.php】の場合、【/home/public/・・・/run.php】のようになります。

エラーが出ている場合、Perl、PHPといった言語のバージョンが違うのかもしれません。ツールが動作サポートしているバージョン以外だと動かないことがあります。
cronで設定したスクリプトファイルへのパス【/home/public/・・・/run.php】の前かスクリプトファイルの先頭に【/usr/local/php/bin/・・・】というようなパスを指定していると思います。 このパスで指定している言語のバージョンと、動かそうとしているツールがサポートしているバージョンが違うのかもしれません。 Webページで動いているバージョンと、cronで動いているバージョンが異なることもありますので注意してください。
このパスはサーバーによって違うので、お使いのサーバーのヘルプやマニュアルをもう一度調べてください。どこにどんなパスを書けばよいか書かれています。

どうしても動かない時は、簡単なスクリプトファイルを動かしてみるといいかもしれません。
例えばPHPの場合、
<?php
 echo("test");
?>
などです。
成功していればcronの実行結果通知メールアドレスに、testと書かれて送られてきます。
言語のバージョンが関係なくなるので、原因を切り分ける方法の1つになります。


動くようになったら、実行間隔を動かしたい設定にします。
5分おき、毎時20分、毎週水曜日、毎月5日、毎年1月1日、などの設定ができます。 自分の理想に近いタイマーを設定してください。

便利ツール
お役立ち情報・小技
読者に好かれるセールス
ネットビジネスのあれこれ
自分で行う無料SEO対策
ネットビジネスの確定申告
更新情報
オンラインマニュアル
連絡先