Cron を使用して通常のユーザーとして PHP スクリプトを実行する方法
Cron は、Linux などの Unix 系オペレーティング システムでジョブを時間ベースでスケジュールするための強力なユーティリティです。これはデーモンとして実行され、バックアップを実行するコマンドやシェル スクリプトなどのジョブをスケジュールしたり、更新をスケジュールしたり、特定の時間、日付、または間隔でバックグラウンドで定期的かつ自動的に実行されるジョブをスケジュールするために使用できます。
cron の制限の 1 つは、システムが永久に実行されることを想定していることです。そのため、デスクトップ マシン以外のサーバーに適しています。さらに、「at」または「batch」コマンドを使用して、指定した時間または後の時間にタスクをスケジュールできます。ただし、タスクは 1 回だけ実行されます (繰り返されません)。
推奨読書: Linux で Anacron を使用してジョブをスケジュールする方法
この記事では、通常のシステム ユーザーが Linux で cron ジョブ スケジューラを介して PHP スクリプトを実行または実行できるようにする方法を説明します。
crontab (CRON TABLE) プログラムを使用してジョブをスケジュールできます。各ユーザーは、ジョブを定義するための 6 つのフィールドで構成される独自の crontab ファイルを持つことができます。
- 分 – 0 ~ 59 の値を受け入れます。
- 時間 – 0 ~ 23 の値を受け入れます。
- 日付 – 1 ~ 31 の値を保存します。
- 年間の月 – 1 ~ 12 または 1 月 ~ 12 月の値を保存します。各月の名前の最初の 3 文字、つまり Jan または Jun を使用できます。
- 曜日 – 0 ~ 6 または日 ~ 土の値を保持します。ここでは、各日の名前の最初の 3 文字、つまり日または水も使用できます。
- コマンド – 実行するコマンド。
独自の crontab ファイル内のエントリを作成または編集するには、次のように入力します。
$ crontab -e
すべての crontab エントリを表示するには、次のコマンドを入力します (これは単に crontab ファイルを標準出力に出力します)。
$ crontab -l
ただし、システム管理者が別のユーザーとして PHP スクリプトを実行したい場合は、/etc/crontab ファイルまたは root ユーザーの crontab ファイルでスクリプトをスケジュールする必要があります。これらのファイルは、指定するための追加のフィールドをサポートしています。ユーザー名:
$ sudo vi /etc/crontab
そして、このように PHP スクリプトが実行されるようにスケジュールし、タイミング セクションの後にユーザー名を指定します。
0 0 * * * tecmint /usr/bin/php -f /var/www/test_site/cronjobs/backup.php
上記のエントリは、ユーザー tecmint として毎日深夜にスクリプト /var/www/test_site/cronjobs/backup.php を実行します。
上記のスクリプトを 10 分ごとに自動的に実行したい場合は、crontab ファイルに次のエントリを追加します。
*/10 * * * * tecmint /usr/bin/php -f /var/www/test_site/cronjobs/backup.php
上記の例では、*/10 * * * *
はジョブがいつ発生するかを表します。最初の図は分を示しています。このシナリオでは、"ten"
分ごとです。他の数字は、それぞれ、時間、日、月、曜日を示します。
以下の関連記事もお読みください。
- シェル スクリプトを使用して Linux システム メンテナンス タスクを自動化する
- すべての Linux ユーザーが知っておくべき 12 の便利な PHP コマンドラインの使用法
- Linux ターミナルで PHP コードを実行する方法
- システム管理者向けの 30 の便利な Linux コマンド
それだけです!この記事がお役に立てば幸いです。このトピックに関して質問や共有したいアイデアがある場合は、以下のコメント フォームを使用してください。