IST時にcronjobを設定する

IST時にcronjobを設定する

別のタイムゾーンで実行するようにcronjobを設定しようとしています。私は多くを見て、編集が/etc/default/cron行く道であることがわかりました。ただし、このファイルは廃止され、次のメッセージを確認してTZ=ISTファイルに追加しました/etc/init/cron.conf。これがうまくいくかどうかはわかりません。今後進む方法の提案はありますか?

# This file has been deprecated. Please add custom options for cron to
# /etc/init/cron.conf and/or /etc/init/cron.override directly. See
# the init(5) man page for more information

Ubuntu Linuxでcron 3.0pl1-120ubuntu4を使用しています。

ベストアンサー1

クローンは別のTZにあります。

CRON_TZ代わりに変数を設定してみることもできますTZ。これらのオプションはディストリビューションによって異なります。次のFedoraとUbuntuのマニュアルページを見てman 5 crontab検索しました。TZ

Fedoraにはこの機能がCRON_TZ=ISTあり、Ubuntuでは次のように宣言します。

cronデーモンは定義されたタイムゾーンで実行されます。現在、ユーザー固有のタイムゾーンはサポートされていません。すべてのタスク:システムタスクとユーザータスクは、設定されたタイムゾーンに従って実行されます。ユーザーがcrontabでTZ環境変数を指定しても、これはcrontabジョブ自体の実行ではなく、crontabで実行されるコマンドにのみ影響します。

Fedora のマニュアルページでは、次のように説明します。

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

Ubuntuを使用していることを考えると、これはうまくいくとは思わないが、そうかもしれない。 Ubuntu 12.10を確認しました。

次のようにしてみてください。

#m  h           d   m   wday    command
CRON_TZ=IST
5   0,6,12,18   *   *   *       /path/to/script.bash

すべてのクローンは異なるTZにあります。

しかし、目標が異なる時間帯ですべてのcronを実行することであれば、より劇的な戦略を採用し、TZcronデーモン自体を変更することができます。停止/開始スクリプトには、次の内容があります。

# /etc/init.d/crond
...
...
# Source function library.
. /etc/rc.d/init.d/functions

[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

export TZ=IST
start() {
    if [ $UID -ne 0 ] ; then
        echo "User has insufficient privilege."
        exit 4
    fi
    [ -x $exec ] || exit 5
    [ -f $config ] || exit 6
    echo -n $"Starting $prog: "
    daemon $prog $CRONDARGS
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
}
...
...

これはFedora crond停止/開始スクリプトのコードですが、Ubuntuのcrond停止/開始スクリプトにも同様の変更が発生する可能性があります。

おすすめ記事