1636123200
最近、サーバーでスケジュールされたタスクを設定する必要がありましたが、これは最初は少し怖くて怖いので、基本的なcronジョブを設定する手順についての簡単な記事を紹介します。この記事では、1日に1回メールを送信する簡単なPHPスクリプトを作成します。
まず、テストする簡単なPHPスクリプトを作成できます。簡単なメールを自分宛に送信するファイルを作成します。
<?php
$to = 'me@example.com';
$message = 'This is the message.';
$subject = 'Insert Subject Here';
$headers = 'From: noreply@example.com' . "\r\n" .
'Reply-To: me@example.com';
@mail($to, $subject, $message, $headers);
?>
mail()
PHPの関数に慣れていない場合は、公式ドキュメントをご覧ください。電子メールの送信先、送信元、件名、メッセージ、およびヘッダーの変数を設定しています。これは、電子メールを送信するための最新の安全な方法ではありませんが、機能するスクリプトなので、テストに使用します。これをcron.phpとして保存します。
公開フォルダへのパスはLinuxディストリビューションによって異なりますが、このチュートリアルのために、/ var / www / html / crontestに配置します。したがって、スクリプトへのフルパスは/var/www/html/crontest/cron.phpになります。ファイルを押すことにより、ブラウザから直接このスクリプトをテストできます。Webサイトがexample.comの場合、おそらくexample.com/crontest/cron.phpになります。ファイルをロードして電子メールを受信すると、スクリプトが機能することがわかります。
localhostはPHPメールを送信するように設定されていないため、このスクリプトはライブLinux環境から実行する必要があります。
cronジョブの設定を計算するCrontabGeneratorという便利なサイトがありますが、最初に構文がどのようになるかについて簡単に説明します。
* * * * * /usr/bin/php /var/www/html/crontest/cron.php > /dev/null 2>&1
cronコマンドには、タイミングと実行するコマンドの2つの部分があります。この例では、コマンドには次の3つの部分が含まれています。
タイミング | 実行する | スクリプトへのパス | 出力 |
---|---|---|---|
* * * * * | /usr/bin/php | /var/www/html/crontest/cron.php | > /dev/null 2>&1 |
/usr/bin/php
ます。> /dev/null 2>&1
破棄されます。上記の例では、cronジョブは毎分、より具体的には、毎月、毎日、毎時、毎時を送信するように設定されています。アスタリスクは、「すべて」を表すワイルドカードです。
これがどのように機能するかを理解するためのいくつかの基本的な例です。
構文 | 説明 |
---|---|
0 * * * * | 1時間に1回実行します(ゼロ分で1時間ごと) |
0 0 * * * | 1日1回実行します(毎日深夜0分0分) |
0 0 1 * * | 月に1回実行します(毎月1日の深夜0分0分) |
0 0 1 1 * | 年に1回実行します(毎年最初の月の初日の深夜0分に) |
奇数/偶数日、5分ごとなど、あらゆる種類の設定があり、探している正確なスケジュールを見つけるためのリソースが豊富にあります。
cronがrootの下に設定されている場合は
sudo
、コードの前に実行する必要があります。
cronコマンドはとして知られていcrontab
ます。1日に1回メールを送信するようにcronジョブを設定するので、完全なコマンドは次のとおりです。
0 0 * * * /usr/bin/php /var/www/html/crontest/cron.php >/dev/null 2>&1
サーバーにSSHで接続したら、次のコマンドを使用して現在実行中のジョブがあるかどうかを確認し、すべてを一覧表示できますcrontabs
。
crontab -l
crontab: no crontab for user
次に、を編集しcrontab
ます。
crontab -e
この時点で、サーバーのデフォルトエディターを変更したことがない場合は、viエディターを使用している可能性があります。初めて使用するときは少し混乱して怖いことがあるので、次のようにします。
w
-書き込み)して終了(q
-終了)します。これcrontab
で保存され、メールは1日1回深夜に送信されます。*/5 * * * *
テストを高速化するために、5分ごとに設定できます。
ファイルに複数のcronジョブを配置することもできます。各コマンドを別々の行に配置するだけで、すべて実行されます。
Envato Tutsのチュートリアルなど、cronジョブの詳細な説明に入るチュートリアルは他にもありますが、これは概念を理解するための簡単な記事です。
リンク: https://www.taniarascia.com/setting-up-a-basic-cron-job-in-linux/
1636123200
最近、サーバーでスケジュールされたタスクを設定する必要がありましたが、これは最初は少し怖くて怖いので、基本的なcronジョブを設定する手順についての簡単な記事を紹介します。この記事では、1日に1回メールを送信する簡単なPHPスクリプトを作成します。
まず、テストする簡単なPHPスクリプトを作成できます。簡単なメールを自分宛に送信するファイルを作成します。
<?php
$to = 'me@example.com';
$message = 'This is the message.';
$subject = 'Insert Subject Here';
$headers = 'From: noreply@example.com' . "\r\n" .
'Reply-To: me@example.com';
@mail($to, $subject, $message, $headers);
?>
mail()
PHPの関数に慣れていない場合は、公式ドキュメントをご覧ください。電子メールの送信先、送信元、件名、メッセージ、およびヘッダーの変数を設定しています。これは、電子メールを送信するための最新の安全な方法ではありませんが、機能するスクリプトなので、テストに使用します。これをcron.phpとして保存します。
公開フォルダへのパスはLinuxディストリビューションによって異なりますが、このチュートリアルのために、/ var / www / html / crontestに配置します。したがって、スクリプトへのフルパスは/var/www/html/crontest/cron.phpになります。ファイルを押すことにより、ブラウザから直接このスクリプトをテストできます。Webサイトがexample.comの場合、おそらくexample.com/crontest/cron.phpになります。ファイルをロードして電子メールを受信すると、スクリプトが機能することがわかります。
localhostはPHPメールを送信するように設定されていないため、このスクリプトはライブLinux環境から実行する必要があります。
cronジョブの設定を計算するCrontabGeneratorという便利なサイトがありますが、最初に構文がどのようになるかについて簡単に説明します。
* * * * * /usr/bin/php /var/www/html/crontest/cron.php > /dev/null 2>&1
cronコマンドには、タイミングと実行するコマンドの2つの部分があります。この例では、コマンドには次の3つの部分が含まれています。
タイミング | 実行する | スクリプトへのパス | 出力 |
---|---|---|---|
* * * * * | /usr/bin/php | /var/www/html/crontest/cron.php | > /dev/null 2>&1 |
/usr/bin/php
ます。> /dev/null 2>&1
破棄されます。上記の例では、cronジョブは毎分、より具体的には、毎月、毎日、毎時、毎時を送信するように設定されています。アスタリスクは、「すべて」を表すワイルドカードです。
これがどのように機能するかを理解するためのいくつかの基本的な例です。
構文 | 説明 |
---|---|
0 * * * * | 1時間に1回実行します(ゼロ分で1時間ごと) |
0 0 * * * | 1日1回実行します(毎日深夜0分0分) |
0 0 1 * * | 月に1回実行します(毎月1日の深夜0分0分) |
0 0 1 1 * | 年に1回実行します(毎年最初の月の初日の深夜0分に) |
奇数/偶数日、5分ごとなど、あらゆる種類の設定があり、探している正確なスケジュールを見つけるためのリソースが豊富にあります。
cronがrootの下に設定されている場合は
sudo
、コードの前に実行する必要があります。
cronコマンドはとして知られていcrontab
ます。1日に1回メールを送信するようにcronジョブを設定するので、完全なコマンドは次のとおりです。
0 0 * * * /usr/bin/php /var/www/html/crontest/cron.php >/dev/null 2>&1
サーバーにSSHで接続したら、次のコマンドを使用して現在実行中のジョブがあるかどうかを確認し、すべてを一覧表示できますcrontabs
。
crontab -l
crontab: no crontab for user
次に、を編集しcrontab
ます。
crontab -e
この時点で、サーバーのデフォルトエディターを変更したことがない場合は、viエディターを使用している可能性があります。初めて使用するときは少し混乱して怖いことがあるので、次のようにします。
w
-書き込み)して終了(q
-終了)します。これcrontab
で保存され、メールは1日1回深夜に送信されます。*/5 * * * *
テストを高速化するために、5分ごとに設定できます。
ファイルに複数のcronジョブを配置することもできます。各コマンドを別々の行に配置するだけで、すべて実行されます。
Envato Tutsのチュートリアルなど、cronジョブの詳細な説明に入るチュートリアルは他にもありますが、これは概念を理解するための簡単な記事です。
リンク: https://www.taniarascia.com/setting-up-a-basic-cron-job-in-linux/