特定の日付[現地時間ではなくクライアント時間]にジョブを実行して、クライアントにメールを送信します。私はcpanel cronジョブを使用していますが、タイムゾーンでcronジョブを使用しようとしました
それでも私のローカルタイムゾーンで送信しています
32 16 08 05 * /usr/bin/curl CRON_TZ=Africa/Algiers https://www.example.com/SendCron.php?CronID=382 #CronID382END # z93v66
私はCron_TZを使用して何が間違っていましたか?
CRON_TZ=
のオプション属性として、/usr/bin/curl
が crontab
ファイルの間違った場所にあります。
代わりに、cronエントリの前に、環境変数として設定する必要があります:
CRON_TZ=Africa/Algiers
32 16 08 05 * /usr/bin/curl https://www.example.com/SendCron.php?CronID=382
同じ単一行の単一のcronエントリにタイムゾーンを設定する必要がある場合、CRON_TZ
環境変数では不可能ですが、外部 env
を呼び出す必要があります(変更された環境でプログラムを実行)TZ
を変更するには:
32 16 08 05 * /usr/bin/env TZ=Africa/Algiers /usr/bin/curl https://www.example.com/Send...
どちらもタイムゾーンを変更することに注意してくださいcronデーモンではなく、コマンドの場合。 cronデーモンは、CRON_TZ
変数に関係なく、フィールドが現在の時刻と一致するかどうかを確認するだけです。 systemd-cron crontab
のマニュアルページで、この制限について説明しています。
Systemd-cronユニットは、定義されたタイムゾーンで実行されます。現在、ユーザーごとのタイムゾーンはサポートされていません。すべてのタスク:システムおよびユーザーのタスクは、構成されたタイムゾーンに基づいて実行されます。ユーザーがcrontabでTZ環境変数を指定した場合でも、これはcrontabタスク自体の実行ではなく、crontabで実行されるコマンドにのみ影響します。
タイムゾーンに基づいてスケジュールを実行する必要がある場合は、サーバーのタイムゾーンを変更する必要があります。例:
ln -sf /usr/share/zoneinfo/Africa/Algiers /etc/localtime