Несколько экземпляров CRON_TZ внутри файла cron (CentOS)
Можно ли иметь несколько часовых поясов в /etc/crontab
файл, как показано ниже?
CRON_TZ=Europe/Paris
*/20 * * * * root /home/user/script.sh >/dev/null 2>&1
*/5 * * * * root /home/user/script1.sh >/dev/null 2>&1
А потом:
CRON_TZ=UTC
*/5 * * * * root /home/user/watchdog.sh >/dev/null 2>&1
*/10 * * * * root /home/user/watchdog1.sh >/dev/null 2>&1
Я также пытался TZ=Europe/Paris
а также export TZ=Europe/Paris
вместо CRON_TZ
перед каждой строкой. Но это не сработало.
Я не хочу менять исходный часовой пояс сервера, который UTC
, Просто хочу запускать определенные задачи в разных часовых поясах.
Как я могу использовать несколько часовых поясов, как это?
1 ответ
Я не думаю, что вы можете поместить обе часовые пояса в /etc/crontab
, но вы можете сделать разные файлы в /etc/cron.d
каждый из которых имеет разные CRON_TZ
а также TZ
установка.
Например, /etc/cron.d/chicago
:
CRON_TZ=America/Chicago
25 12 * * * root echo Chicago >> /tmp/TZ
А также /etc/cron.d/new_york
:
CRON_TZ=America/New_York
25 13 * * * root echo New_York >> /tmp/TZ
В 17:25 UTC, содержание /tmp/TZ
является:
Chicago
New_York
На машине CentOS 7 с
cronie-1.4.11-14.el7_2.1.x86_64
, Я могу иметь два
CRON_TZ
в одном файле. Мой файл crontab гласит:
CRON_TZ=Etc/GMT+0
* */2 * * * touch ~/temp/cron-0gmt0evenhour
* 1-23/2 * * * touch ~/temp/cron-0gmt1oddhour
CRON_TZ=Etc/GMT+1
* */2 * * * touch ~/temp/cron-1gmt0evenhour
* 1-23/2 * * * touch ~/temp/cron-1gmt1oddhour
1-23/2
означает нечетные часы. См StackOverflow и Serverfault.
Результат (после того, как он проработает достаточно долго):
$ ll ~/temp/ --full-time
total 0
-rw-r--r-- 1 packard domain_users 0 2020-11-21 22:59:01.108221582 +0000 cron-0gmt0evenhour
-rw-r--r-- 1 packard domain_users 0 2020-11-21 23:25:01.177041834 +0000 cron-0gmt1oddhour
-rw-r--r-- 1 packard domain_users 0 2020-11-21 23:25:01.176041830 +0000 cron-1gmt0evenhour
-rw-r--r-- 1 packard domain_users 0 2020-11-21 22:59:01.108221582 +0000 cron-1gmt1oddhour
CRON_TZ
контролирует только время запуска задания, поэтому это полезно, только если задание НЕ запускается каждый час (как указал Майкл в комментарии). Использовать
TZ
чтобы установить переменную среды, которую видит задание.
Ответ Майкла (несколько файлов cron) будет невозможен для пользователей без полномочий root, у которых есть только один crontab. И имея несколько
CRON_TZ
полезен при переходе на летнее время в разных часовых поясах.
пс. Я узнал свою версию cron из следующей команды, вдохновленной этим сообщением.
$ rpm -qf `which crontab`
cronie-1.4.11-14.el7_2.1.x86_64