7

На бегу

dpkg-reconfigure tzdata

в терминале, и я получаю 2 разных времени на моей машине

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

Проблема в том, что я хочу запустить свои cronjobs по местному времени, которое указано в IST, но они работают по универсальному времени UTC. Где мне нужно внести необходимые изменения для достижения желаемого поведения?

4 ответа4

8

Cron работает по местному времени, но вы можете использовать строку TZ = в некоторых системах, чтобы заставить ее запускать определенные строки в разных часовых поясах. Другие системы не поддерживают это. Если у вас есть строка TZ=UTC или TZ=GMT , закомментируйте это. Если вы этого не сделаете, попробуйте добавить TZ=IST на отдельной строке перед вашей первой записью. Использование man crontab должно документировать строку TZ =, если ваша система поддерживает это. Остерегайтесь проблем с переходом на летнее время, если вы указали часовой пояс.

Если cron действительно работает в UTC, то есть несколько возможностей, в том числе то, что ваша система работает в UTC, или что cron каким-то образом запустился с переменной окружения TZ, установленной в UTC. Тип

date

чтобы увидеть, сколько времени ваша система хранит. Убедитесь, что в вашей оболочке не установлена переменная TZ (проверьте с помощью printenv TZ , которая ничего не должна возвращать).

Делать

ps auxwwe | grep cron | grep TZ

проверить cron, начав с набора TZ. Если ничего не возвращается, TZ не был установлен при запуске. Если он установлен, вам нужно будет проследить весь процесс загрузки, чтобы увидеть, где установлен TZ, начиная со скрипта, запускающего cron.

Здесь больше о cron и часовых поясах:

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

--jh--

3

В моем экземпляре Amazon EC2 Linux установка переменной TZ только изменила программы часового пояса, использованные после их запуска cron, но не изменила, во сколько их запустил cron - они все еще запускались в соответствии с временем UTC.

Чтобы заставить cron запускать программы по местному времени, мне пришлось изменить /etc/localtime на символическую ссылку на соответствующий tzfile для моего часового пояса, а затем перезапустить службу cron:

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

Более подробная информация здесь: https://www.freedesktop.org/software/systemd/man/localtime.html

1

Моя система была настроена на UTC, прежде чем я сменил ее на местный часовой пояс.

Я обнаружил, что мне пришлось перезапустить cron после изменения системного часового пояса.

1

Только что понял это на Ubuntu 14/16. Работал отлично для меня.

Шаги (подразумевается sudo):

  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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .