9 votos

Ejecutar Cronjobs según la hora local en lugar de la hora universal

En marcha

dpkg-reconfigure tzdata

en el terminal y tengo 2 tiempo diferente en mi máquina

Local time is now:      Wed May  1 11:58:55 IST 2013.
Universal Time is now:  Wed May  1 06:28:55 UTC 2013.

El problema es que quiero ejecutar mis cronjobs según la Hora Local que está en IST, pero se están ejecutando según la Hora Universal UTC. ¿Dónde tengo que hacer los cambios necesarios para lograr el comportamiento deseado?

11voto

HackedByAqua Puntos 11

Cron se ejecuta en la hora local, pero puedes utilizar una línea TZ= en algunos sistemas para que ejecute ciertas líneas en diferentes zonas horarias. Otros sistemas no lo permiten. Si tiene una línea TZ=UTC o TZ=GMT coméntalo. Si no lo hace, pruebe a añadir TZ=IST en una línea aparte, antes de la primera entrada. Cómo utilizar man crontab debe documentar la línea TZ= si su sistema la soporta. Tenga cuidado con los problemas de horario de verano si especifica la zona horaria.

Si cron se ejecuta realmente en UTC, existen varias posibilidades, entre ellas que su sistema se ejecute en UTC o que cron se haya iniciado de algún modo con la variable de entorno TZ establecida en UTC. Escribe

date

para ver qué hora marca tu sistema. Asegúrese de que la variable TZ no está establecida en su Shell cuando haga eso (compruébelo con printenv TZ que no debería devolver nada).

Visite

ps auxwwe | grep cron | grep TZ

para probar si cron se inicia con TZ configurado. Si no devuelve nada, TZ no estaba configurado cuando se inició. Si está establecida, tendrá que rastrear el proceso de arranque para ver dónde se estableció TZ, comenzando con el script que inició cron.

Aquí encontrará más información sobre cron y las zonas horarias:

https://askubuntu.com/questions/54364/how-do-you-set-the-timezone-for-crontab

--jh--

5voto

Ken Puntos 11

En mi instancia de Amazon EC2 Linux, establecer la variable TZ sólo cambiaba la zona horaria que usaban los programas después de que cron los lanzara, pero no cambiaba la hora a la que cron los lanzaba: seguían lanzándose según la hora UTC.

Para conseguir que cron lanzara los programas según la hora local, tuve que cambiar /etc/localtime para que sea un enlace simbólico al archivo tzfile adecuado para mi zona horaria y, a continuación, reinicie el servicio cron:

mv /etc/localtime /etc/localtime.bak
ln -s /usr/share/zoneinfo/America/Chicago /etc/localtime
service crond restart

Más información aquí: https://www.freedesktop.org/software/systemd/man/localtime.html

2voto

Sean Puntos 310

Tenía mi sistema configurado en UTC antes de cambiarlo a mi zona horaria local.

Descubrí que tenía que reiniciar cron después de cambiar la zona horaria del sistema.

1voto

Larry Puntos 11

Acabo de descubrirlo en Ubuntu 14/16. Funcionó perfectamente para mí.

Pasos (sudo implícito):

  1. cat /etc/timezone
  2. rm -fv /etc/localtime
  3. ln -s /usr/share/zoneinfo/Asia/Kolkata /etc/localtime
  4. apt install -y --reinstall tzdata
  5. /etc/init.d/rsyslog restart
  6. tail -f /var/log/syslog
  7. cat /etc/timezone

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X