Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

501
Views
¿Es posible configurar un crontab para ajustar sus tiempos cuando el horario de verano está en vigor?

Tengo un crontab que programa muchas cosas en un servidor Ubuntu que se ejecuta en horario UTC. Algunos de los scripts que se ejecutan son sensibles al tiempo en relación con las aplicaciones web para las que proporcionan funcionalidad.

Por ejemplo, algo debe actualizarse a las 4:00 p. m. todos los días, ya que los usuarios finales lo ven en su reloj.

Esto no es un problema durante el invierno cuando el Reino Unido está en GMT, pero de abril a octubre, los relojes se adelantan una hora para el horario de verano británico (BST). Los scripts que se ejecutan en el servidor actualizan la aplicación web a lo que parece ser a las 5:00 p. m. para los usuarios, en lugar de las 4:00 p. m.

¿Hay alguna forma de ajustar condicionalmente las horas programadas de crontab para este cambio de zona horaria?


La intención a continuación es ejecutar el primer día de cada mes a las 00:00. Durante BST, tengo entendido que esto se ejecutará a la 01:00 BST durante el horario de verano:

 # mh dom mon dow user command 0 0 1 * * root cd / && run-parts --report /etc/cron.monthly

¿Qué opciones tengo para asegurarme de que esto siempre se ejecute a las 00:00 durante GMT y BST?

Información de zona horaria del servidor

 $ timedatectl Local time: Mon 2021-11-01 22:57:41 UTC Universal time: Mon 2021-11-01 22:57:41 UTC RTC time: Mon 2021-11-01 22:57:41 Time zone: Etc/UTC (UTC, +0000) System clock synchronized: yes NTP service: n/a RTC in local TZ: no
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Espera una hora si estás en GMT:

 0 23 0 * * root [ "$(date +'%Z')" == "GMT" ] && sleep 1h; cd / && run-parts --report /etc/cron.monthly
over 4 years ago · Santiago Trujillo Report

0

En mis comentarios anteriores, elogié la respuesta de Cyrus, que pensé que sonaba muy prometedora. Aparentemente, no estuvo de acuerdo y eliminó su respuesta. Oh bien...

Esta podría ser una buena alternativa para ti:

https://www.el-arte-de-la-web.com/system/cron-set-timezone/

Si se encuentra en una zona horaria diferente a la de algunos de sus clientes, o tiene un servidor que usa UTC para evitar los cambios de horario de verano, puede ser complicado configurar un script CRON que se ejecute a la hora correcta en una zona horaria diferente. Aquí exploramos un par de soluciones. ...

[Puede] especificar una zona horaria para CRON:

 # mh dom mon dow command TZ=Australia/Sydney 0 0 * * * www-data /usr/bin/php $CRONSCRIPT

Desafortunadamente, configurar la zona horaria aquí no tiene ningún efecto sobre cuándo se activa el script CRON. En cambio, lo que hace es establecer una variable de entorno dentro del shell en el que se llama al script. El script en sí puede usar la zona horaria TZ...

 # mh dom mon dow command SHELL=/bin/bash TZ=Australia/Sydney 0 * * * * www-data [ "$(date +\%H\%M)" == "0000" ] && /usr/bin/php $CRONSCRIPT

¡Éxito! Ahora tenemos un medio para activar un script a medianoche en cualquier zona horaria. El comando CRON se activará cada hora, pero solo continuará ejecutando el script PHP si es medianoche en la zona horaria de destino.

Simplemente sustituya su tarea por "php", ¡y debería estar listo para comenzar!

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!