противоречия 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

  • Отдельное имя хоста сервера, отображаемое в журналах cron этого сервера
  • Простой bash не работает должным образом cron
  • Работа Cron, похоже, не выполняется в ubuntu
  • Вставить строку в файлы с несколькими типами файлов
  • cronjob для автоматического резервного копирования БД на сегодняшний день с префиксом файла
  • start-stop-daemon делает cron pidfile с неправильным pid
  • Логротат или скриптинг для управления файлом журнала
  • Файлы debian7 cron.allow & cron.deny
  • 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

    Сделать yakuake вывод правильных символов

    Как проанализировать файл для извлечения 3 цифр, хранящихся в «групповом номере»,

    Команды Linux в редакторе vi

    Точка доступа предлагает IP-адрес, если используется в качестве сервера DHCP?

    Настройка LIRC в Debian 8

    Как защитить выражения в команде «find» от интерпретации оболочки?

    Что такое ядро, «инструменты и утилиты GNU», оболочка и диспетчер окон?

    Файл конфигурации RAID отсутствует

    При входе в систему, сделайте снимок пользователя в окне Login (loginGUI promt window)

    Неверная строка версии «GNU / Linux» при создании загрузочного USB-накопителя

    scp отказывается делать что-либо, кроме использования печати

    Библиотека libblkid: любой способ использовать ее с блоками в основной памяти?

    Как закрепить многие подкаталоги n-го уровня без их верхнего (родительского) каталога?

    Использование cp для замены каталога с тем же именем

    Работает ли orca + RICHPse в контейнерах Solaris или в локальных зонах?

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