Поиск по сайту:

Как установить часовой пояс для Crontabs?


Crontab, сокращенная форма таблицы Cron, представляет собой как команду, так и текстовый файл в системах UNIX/Linux, используемый для определения расписания заданий Cron. Что такое задание Cron? Задание Cron, также широко известное как просто Cron, представляет собой планировщик на основе времени, который выполняет задачи в системах Linux в указанное время. Он запускается с помощью демона crond. Задания Cron чрезвычайно полезны для автоматизации сценариев оболочки и других команд, которые необходимо выполнять через регулярные промежутки времени, что в противном случае было бы утомительным при выполнении вручную.

Обычно задания Cron запускаются с использованием локального времени, определенного в системе. Однако вы можете предпочесть запустить задание Cron в другом часовом поясе, не обязательно изменяя время и дату вашего сервера.

Вы можете проверить свое местное время с помощью команды timedatectl следующим образом:

$ timedatectl

Вы также можете использовать команду даты следующим образом:

$ date

Итак, как вы можете установить другой часовой пояс для своих Crontabs? Давай выясним.

Как установить часовой пояс для Crontabs

В вашей локальной системе Linux часовые пояса обычно указываются в каталоге /usr/share/zoneinfo. Каталог содержит список континентов и стран и их часовых поясов, как показано ниже.

$ ls /usr/share/zoneinfo/

Вы можете легко настроить текущий часовой пояс на другой, используя показанный синтаксис. Например, чтобы настроить систему на время в Токио, Япония, просто выполните:

$ sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

Однако вы не можете изменить системное время, особенно когда несколько пользователей планируют разные задания Cron. Это повлияет на время выполнения их заданий Cron.

К счастью, вы можете настроить конкретный часовой пояс для своего задания Cron следующим образом:

Во-первых, вам нужно экспортировать переменную TZ в сценарий оболочки перед любыми другими записями оболочки. Затем откройте свой crontab и используйте переменную среды crontab CRON_TZ в начале файла crontab.

Предположим, я хочу настроить задание Cron для запуска сценария резервного копирования в 14:20 каждый день по европейскому/лондонскому времени, а не по местному времени. Мое местное время на 2 часа опережает лондонское, поэтому в 14:20 в Лондоне мое местное время будет 16:20 или 14:20.

Сначала перейдите к файлу сценария оболочки и экспортируйте переменную TZ перед любыми другими записями сценария. Посмотрите, что я сделал в своем сценарии Shell.

EXPORT TZ=Europe/London

Сохраните изменения и выйдите из скрипта.

Затем получите доступ к файлу crontab, выполнив команду:

$ crontab -e

Не забудьте определить переменную crontab CRON_TZ перед всеми остальными записями Cron, как показано ниже.

CRON_TZ=Europe/London

20 14 * * * /home/james/backup.sh

Сохраните и выйдите из crontab. Чтобы быть уверенным в настройках, вы можете просмотреть список crontab с помощью команды:

$ crontab -l

Итак, когда часы показали 14:20 по лондонскому времени, что соответствует 16:40 по местному времени или 16:20, резервное копирование прошло успешно.

Заключение

Это руководство является идеальной демонстрацией того, что вы действительно можете установить указанный часовой пояс для своих Crontabs, не меняя системное время. Таким образом, вы можете настроить различные задачи для выполнения в разных часовых поясах в соответствии с вашими потребностями, например, если вы хотите отправлять электронные письма подписчикам определенного часового пояса в их время, а не в ваше местное время.

Статьи по данной тематике: