Help us understand the problem. What is going on with this article?

Moodle 3.8 マニュアル - Cron

原文

Cron

Moodle の 'cron' プロセスはバックグラウンドで定期的に動作するべき PHP スクリプト(スタンダートな Moodle インストールの一部)です。Moodle cron スクリプトは、それぞれ異なる期間で実行される異なるタスクです。

重要: Moodle のために cron プロセスをセットアップするのをスキップしないでください。これなしには、サイトが適切に動作しません。

cron は、非同期的なアクティビティとして recycle bin(翻訳準備中) を削除するために毎分動作する事が推奨されます。

cron プログラム(Moodle スクリプトを実行する)は、時間のみに依存して使われる unix ベースのシステム(Linux と OSX を含む)のコアな部分のサービス群です。ウィンドウズじょうでは、ウィンドウズ タスクスケジューラを作成し、定期的に実行するという簡単な解決策となります。シェアードホスティングにおいては、どのように cron を設定するかというドキュメントがあるかを見つけて(あるいはサポートに問い合わせて)ください。ほとんどのシェアードホスティングシステムは、サイトを管理するためにコントロールパネルを用意しており、通常は、そのパネルに Cron ジョブのセクションがあるはずです。

基本的に、タスクはあなたのシステムの cron アクティビティのリストのうちの一つのコマンドを含んでいる。Unix ベースのシステムでは、このリストは 'crontab' と呼ばれ、全てのユーザが持っているものです。

コンテンツ

1 一般的な議論
1.1 Moodle の cron コマンドを動かす
1.2 web ベースの Moodle cron コマンド
1.3 コマンドを置く正しい場所を特定する
2 システムに cron を設定する
3 サードパーティの cron サービスを使う
3.1 Moodle の Cron 設定
3.2 リモート cron
4 タスクをスケジュールする
5 複数の Moodle サーバのために cron を動作させる
6 スケジュールしたタスクをデバッグする
7 関連項目

1 一般的な議論

あなたのサーバタイプのためには、以下のセクションを読んでください。このセクションは、一般的な背景情報についてお伝えします。
cron を配置するためには、基本的に 2つのステップがあります。

  • 正しいコマンドを特定して、実行する
  • システムにおいてコマンドを置く正しい場所を見つける

1.1 Moodle の cron コマンドを動かす

cron を配置するには、Moodle インストールにおいて2つの異なる方法があり、それぞれ異なるスクリプトが使用されます。以下、となります。

  • CLI (コマンドラインインタープリタ)スクリプト。次のパスにあります。
/path/to/moodle/admin/cli/cron.php

もし疑問があれば、これが使うべきスクリプトです。あなたのコンピュータで、'PHP CLI' として実行されるプログラムです。したがって、コマンドの最終的な形は、以下のようになります。

/usr/bin/php /path/to/moodle/admin/cli/cron.php

これが動くかどうかコマンドラインで試すことができる(そして、そうするべき)です。注意: あなたのコマンドラインの PHP バージョンが Moodle によって選ばれたバージョンと互換性があるかチェックしてください。コマンドライン PHP プログラムは、web サイト上のものとは異なり、同じバージョンとは限りません。

もし、ある理由で、CLI スクリプトを動作させられないならば、web ベースのスクリプトがあります。これは、非推奨となっており、将来的に削除される可能性があることに注意してください。これは web ブラウザから、

http://your.moodle.site/admin/cron.php

という web URL リンクのように実行されます。コマンドラインベースのweb ブラウザ(例えば wget のように)を見つけて、最終的なコマンドは次のようになります。

/usr/bin/wget http://your.moodle.site/admin/cron.php

これは、"どこからでも" 実行できるという利点があります。あなたのマシンで cron が動作させられないのなら、別のどこかで動作させられます。

1.2 web ベースの Moodle cron コマンド

選択肢があるなら、web ベースの cron を使うのは避けてください。Moodle の将来のバージョンで削除される可能性があります。

Moodle 2.9 から、cron ジョブは、既にデフォルトで web では動作しなくなっています。以下のエラーメッセージが出力されます。

!!! Sorry, internet access to this page has been disabled by the administrator. !!!

' ダッシュボード ► サイト管理 ► セキュリティ ► サイトセキュリティポリシー ' において、 'Cron execution via command line only' を選択しないことで設定できます。

以下のように注意されます。

'Running the cron from a web browser can expose privileged information to anonymous users. Thus it is recommended to only run the cron from the command line or set a cron password for remote access.'

次に、'Cron password for remote access' を入力するよう求められます。もしこのフィールドが空ならば、パスワードを入力する必要はありません。

これは、web ブラウザから以下の形式の URL を使用した場合、パスワードを与えなければ 、cron.php スクリプトが実行できないことを意味しています。

http://site.example.com/admin/cron.php?password=opensesame

1.3 コマンドを置く正しい場所を特定する

あなたが使用しているシステムに依存するため、プラットフォームあるいはホスティングのドキュメントを読んでください。ほとんどの場合、Moodl cron を動作させるためには、正しいコマンド(上記の)を確立し、ある種のファイルには、実行する時間なども、追加することになります。これは、特定のユーザインターフェースあるいはファイルを直接編集することによりなされます。

CLI バージョンを使っているのなら、cron プロセスが適切なユーザで実行されることを確認してください。web バージョンでは、確認不要です。

一例: Ubuntu/Debian Linux に cron をインストールする場合。root でログインしていることを想定しています。

www-data ユーザ crontab エディタウィンドウを開くために、crontab コマンドを使用します。Debian ベースのシステムでは、Apache (web サーバ)が実行されるユーザです。

$ crontab -u www-data -e

上記コマンドにより、エディタウィンドウが開きます。 CLI cron スクリプトを 1分毎実行するには、以下の行を加えます。

* * * * * /usr/bin/php  /path/to/moodle/admin/cli/cron.php >/dev/null

注: 最後の >/dev/null は、出力を 'bin' に送り、毎分メールを受けるのを止めます。

2 システムに cron を設定する

あなたのサーバタイプの情報を選択してください。

Unix 又は Linux における cron- UNIX と Linux フレーバの OS Cron サービス
'Cron with Windows OS'(略)
'Apple OSX'(略)- 組み込み 'crontab' サービスを使ってください。これは、Unix あるいは Linux の cron と同じです。しかしながら、launchd を回、'Apple の方法で' やりたいかもしれません。その場合は、
'Cron with MAC OS X'(略)を参照してください。
'Cron with web hosting services'(略)-様々な web ホスティングにおける Cron サービスの例があります。

以下は、特定のホストのための手引きがあります(最新かどうか確認してください)
1 and 1 共有サーバにおける cron

3 サードパーティの cron サービスを使う

cron をあなたのサーバで運用する他に、サードパーティの cron サービス(通常、webcron と呼ばれます)を使うことができます。
cron-job.org - 無料のサービスです(1分毎の cron が可能です)。
EasyCron - cron ジョブを設定するのに crontab やその他のタスクスケジューラを必要としない webcron サービスプロバイダです。

3.1 Moodle の Cron 設定

管理者は、コマンドライン経由または Site administratio の 'Site security settings' の リモートアクセスのための cron パスワードによってのみ cron を設定できます。

3.2 リモート cron

'web ベース' バージョンの cron を使うことは、異なる Moodle サーバに cron プロセスを置くのに問題ありません。例えば、Unix の cron サービスは、ウィンドウベースの Moodle サーバの cron web ページを起動できます。

4 タスクをスケジュールする

管理者は、管理 > サイト管理 > サーバ > スケジュールタスク から、cron のタスクを正確にスケジュールできます。'Scheduled tasks'(翻訳準備中) 参照のこと。

5 複数の Moodle サーバのために cron を動作させる

タスクは、並列実行が可能であり、プロセスは、同じ Moodle インスタンスのタスクが複数の web サーバから同時に実行されないように、ロックを活用します。

同じサーバ上で異なる Moodle インスタンスを実行しているのなら、それぞれの Moodle インスタンスは、cron ジョブが必要となります(単一の Apache web サーバでも、異なる Moodle インスタンスを異なるドメインで virtual host の活用により可能です。https://httpd.apache.org/docs/2.2/vhosts/index.html

6 スケジュールしたタスクをデバッグする

しばしば、特定の cron タスクが正しく動作しないことがあります。Moodle の 2.7 バージョンより前においては、ある cron のタスクで例外が発生すると 他の cron タスクが動作しなくなります。毎回 cron が完了しているかをモニタするには、動作ている cron の結果(例えば、"Cron completed at " という文字列を探す)から自動チェックを追加することです。

Moodle 2.7 以降においては、ある単一のスケジュールタスクの失敗は他のタスクの完了を妨げません。ある単一のスケジュールが失敗した場合、失敗とマークされ、再度実行が試みられます。何度も失敗し続けると、次の実行予定時刻は、24時間のうち最大 1 回に控えられます。Scheduled tasks(翻訳準備中)admin ページでは、現在のタスクで失敗したものを確認できます(fail delay-失敗したタスクを再度試みるための秒数 がゼロになっていない)。失敗したタスクをデバッグするのに簡単な方法は、CLI スケジュールタスクランナーを動作させて出力をモニターすることです。

7 関連項目

'Scheduled tasks'(翻訳準備中)
cron 機能についての Wikipedia の記事
MDL-50694 - Cron メッセージ "The operation timed out while waiting for a lock" はエラーメッセージとは言えない。

フォーラムの議論:
How to log the output of a Scheduled Task on Windows - この議論は、ウィンドウズのスケジュールタスクで問題に遭遇した時に、スケジュールタスクのログを採取し、ログファイルに出力するのがよいという、便利なよいトリックを説明している。

カテゴリ:インストール
メインページ

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした