У меня есть cron-скрипт в /etc/cron.d так:
ОБОЛОЧКА = / bin / sh ПУТЬ = / usr / local / sbin: / usr / local / bin: / sbin: / bin: / usr / sbin: / usr / bin
0 0 * * * корень / usr / local / sbin / app_logrotate >> /var/log/app-newday.log
Это работает, но выполняется всегда в 00:00 по местному времени. В рассматриваемом приложении используется время в формате UTC (я не могу это изменить). В моем часовом поясе это отставание на несколько часов, в результате чего метка даты в ежедневном файле журнала, создаваемом этим приложением, никогда не будет новым днем.
Я не могу изменить местное время системы на UTC, так как другие приложения зависят от местного времени. Мне было интересно, можно ли запустить этот cron только в 00:00 UTC, сохраняя при этом локальное время моей системы.
Я попытался добавить TZ = UTC в скрипт cron, но это не сработало.
Кто-нибудь знает, как это можно сделать?
Как правило, cron dameon наследует часовой пояс системы. Единственный (простой) способ, который я знаю, - это установить переменную TZ / CRON_TZ.
Вы перезапустили демон cron после установки переменной TZ / CRON_TZ. Это необходимо, чтобы cron принял изменения!
Некоторые реализации распознают переменную CRON_TZ для определения интерпретации номеров crontab. man 5 crontab
Centos 7 говорит:
The CRON_TZ variable specifies the time zone specific for the cron table. The user should enter a time according to the specified time zone into the table. The time used for writing into a log file is taken from the local time zone, where the daemon is running.
По умолчанию Debian / Ubuntu говорит:
The cron daemon runs with a defined timezone. It currently does not support per-user timezones. All the tasks: system's and user's will be run based on the configured timezone. Even if a user specifies the TZ environment variable in his crontab this will affect only the commands executed in the crontab, not the execution of the crontab tasks themselves.
Итак, если ваша система уважает это:
CRON_TZ=UTC
SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
0 0 * * * root /usr/local/sbin/app_logrotate >> /var/log/app-newday.log