противоречия crontab и DST с разным часовым поясом

С сервера, размещенного в Польше (UTC +01: 00), есть ли способ, которым я могу последовательно выполнять вход в crontab в 9 утра по нью-йоркскому времени (UTC -05: 00)?

Для меня это не было тривиальным, так как летнее время, закончившееся в прошлое воскресенье в Польше, поэтому рабочие места, которые я запланировал в 15:00 по местному времени большую часть года, опаздывают на этой неделе на час с точки зрения Американские фондовые биржи.

Я помню решение Конгресса несколько лет назад о продлении срока службы DST, в результате чего вещи не синхронизировались в течение нескольких недель в год.

Одно обходное решение, в котором я даже не уверен, будет работать (что я предпочитаю избегать в любом случае) заключается в том, что когда у меня есть задача:

0 14 * * * something 

Я получаю время NY TZ=":US/Eastern" date +%s и сравниваю с использованием арифметики bash, должен ли я sleep 3600 или нет, прежде чем запускать something

  • Запуск процесса в заданном временном окне
  • Linux crontab - какую оболочку я использую
  • Запуск действия при посещении URL-адреса
  • Эмулирование /etc/cron.d/ на OSX
  • Как выяснить, что происходит при перезагрузке запланированного сервера?
  • Как я могу игнорировать временные сбои в сценариях, выполняемых cron?
  • «Stdin: не является tty» почтой для запуска скриптов в качестве заданий cron
  • автоматическое восстановление SSH-соединения при загрузке
  • 2 Solutions collect form web for “противоречия crontab и DST с разным часовым поясом”

    Если это единственная работа, вы можете использовать kluge следующим образом:

     # MM HH DM MN DW CMD 0 * * * * TZ=':America/New_York'; if [ `date +\%H` -eq 9 ]; then actual-command-here; fi 

    Я думаю, что вы можете установить переменную окружения как в crontab, если не просто поместить все это в sh -c или shell-скрипт …

    У меня есть задание cron, которое мне нужно запускать каждую неделю, на которую я использую подобный kluge.

    Хорошо, так как изменение TZ env на date , похоже, вызывает правильное текущее время в Ubuntu, это, по крайней мере, обходное решение (которое я пытался не полагаться):

     SHELL=/bin/bash 0 14 * * 1-5 [ $[10#$(date +\%H) - 10#$(TZ=":US/Eastern" date +\%H)] == 5 ] || sleep 3600; w;df 

    Таким образом, это направлено на выполнение w;df в 9:00 по восточному времени. Вместо часа 15 я вставил 14 с возможностью спать один час (3600 секунд), прежде чем запускать дальнейшие команды.

    Interesting Posts

    Fedora не может обнаружить USB или беспроводные сети?

    Проблемы с производительностью Linux Mint на qemu-kvm – возможно, запущены в текстовом режиме и используют удаленную графику для администрирования?

    Удаление LDAP на Fedora

    Получение ошибки со сном и аргументом в sh-скрипте

    Найти количество поклонников в ноутбуке

    Создайте файл в качестве другого пользователя и группы

    Инструмент мониторинга выходных данных в реальном времени

    каковы флагов этой микроархитектуры?

    Vim auto line-break работает не так, как ожидалось (обновление: проблема с неокомплектом)

    Ls -1 Команда в linux на Ubuntu dosen't показывает подробности рядом с именем каждого каталога или файла в списке?

    Какая услуга зарегистрирована для определенного интерфейса на D-Bus?

    Как поймать все после префиксной фразы с SED?

    Как установить Google Chrome в Scientific Linux?

    Каков наилучший способ синхронизации файлов с разделом VFAT?

    Изменить текст на звездочки на вкладке

    Linux и Unix - лучшая ОС в мире.