別のタイムゾーンで実行するように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を実行することであれば、より劇的な戦略を採用し、TZ
cronデーモン自体を変更することができます。停止/開始スクリプトには、次の内容があります。
# /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停止/開始スクリプトにも同様の変更が発生する可能性があります。