um cron em um TZ diferente
Você pode tentar definir a variável CRON_TZ
em vez de TZ
. Essas opções parecem ser específicas da distribuição. Eu olhei nas seguintes man pages ( man 5 crontab
, em seguida, procure por TZ
) para o Fedora e o Ubuntu.
O Fedora tem como CRON_TZ=IST
enquanto o Ubuntu diz assim:
The cron daemon runs with a defined timezone. It currently does not support per-user timezones. All the tasks: system's and user's will be run based on the configured timezone. Even if a user specifies the TZ environment variable in his crontab this will affect only the commands executed in the crontab, not the execution of the crontab tasks themselves.
A página man do Fedora diz assim:
The CRON_TZ variable specifies the time zone specific for the cron table. The user should enter a time according to the specified time zone into the table. The time used for writing into a log file is taken from the local time zone, where the daemon is running.
Dado que você está no Ubuntu, não espero que isso funcione, mas pode acontecer. Eu verifiquei no Ubuntu 12.10.
Tente algo assim:
#m h d m wday command
CRON_TZ=IST
5 0,6,12,18 * * * /path/to/script.bash
Todos os crons em um TZ diferente
Se, no entanto, você estiver planejando executar todos os seus crons em um fuso horário diferente, você poderá adotar a tática mais dramática de alterar o TZ
para o daemon do cron. Algo parecido com isto no script stop / start:
# /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
}
...
...
Este é o código do meu script de parada / início do Fedora crond, mas uma alteração semelhante pode ser feita no seu script de parada / início do Ubuntu para o crond.