Запуск заданий cron в зависимости от временнОй зоны

Задача:

  • Компьютер, на котором запускается задание находится в зоне "Europe/Moscow".
  • Задание должно запускаться во время, соответствующее зоне "Europe/London".
  • Должны учитываться переходы зимнее/летнее время.

Решение

Это "костыль", пока crond не научится работать с TimeZone.

В "/etc/cron.daily" создаётся скрипт "cron-timezone" с таким содержимым:

#!/bin/sh

function TZ {
 date --date='TZ="'$1'" '$2 +"%H"
 }  

CF="/etc/cron.d/events-timezone"

echo "SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=\"root\"
LC_ALL=ru_RU.UTF-8
" > $CF

echo "10 `TZ Europe/London 07` * * * user start-program-in-other-timezone-1" >> $CF
echo "45 `TZ Europe/London 12` * * * user start-program-in-other-timezone-2" >> $CF

Каждую ночь данный скрипт пересоздаёт файл "/etc/cron.d/events-timezone", подставляя вместо "07" и "12" часов - "09" и "14".
Т.е., первое задание будет запускаться в 07:10 по лондонскому времени (в 09:10 по московскому), второе - в 12:45 по лондонскому времени (в 14:45 по московскому).

Наверх