cronでUTCを使用するにはどうすればよいですか?

cronでUTCを使用するにはどうすればよいですか?

私のローカルタイムゾーンはUTCではありません。コンピュータのタイムゾーンを変更せずにcronにスケジュールにUTCを使用させるにはどうすればよいですか?

答え1

では可能ですcronie実装cron

すべてman cron:

crontables では異なるタイムゾーンを使用できます。詳細については、crontab(5) を参照してください。

すべてman 5 crontab

CRON_TZ変数は、cronテーブルごとのタイムゾーンを指定します。ユーザーは、指定されたタイムゾーンに基づいてテーブルに時間を入力する必要があります。ログファイルへの書き込みに使用される時間は、デーモンが実行されているローカルタイムゾーンに基づいています。

完全なcronファイルのタイムゾーンを指定するには、タイムゾーンをまたはリストされている別CRON_TZ=UTCのタイムゾーンに設定できますtimedatectl list-timezones。その後、その時点でコマンドが実行されますが、UTCコマンドで使用された時間はタイムゾーンを使用します。

コマンドで時間を参照するには、コマンド/スクリプトの前に次のものを付ける必要があります。/usr/bin/env TZ=UTC

答え2

TZ環境変数を使用してタイムゾーンを設定できます。システムがに基づいている場合は、ファイルをsystemd変更し、cron.serviceそのサービスに対してのみ変数を設定できます。

たとえば Debian /usr/lib/systemd/system/cron.serviceadd の場合

Environment="TZ=UTC"

[Service]一部後ろに EnvironmentFile=読みました(ファイルが値をリセットしないようにするため)。デーモンを再ロードして再起動しますcron.service

Debian 11 でテストされました。

関連情報