Я предполагаю, что есть разница между моим временем PHP и временем сервера.
Когда я проверяю текущее время в PHP, он показывает, что используется MST. Однако задания cron запускаются не в нужное время.
Как я могу узнать, какой часовой пояс использует сам сервер, а не какой установлен PHP?
Задание Cron использует часовой пояс, определенный сервером (по умолчанию UTC), который вы можете проверить, набрав date
команда в терминале. Следуйте приведенным ниже инструкциям, чтобы изменить часовой пояс сервера и перезапустить демон cron, чтобы служба cron узнала об изменении часового пояса.
Часовые пояса всех стран определены в /usr/share/zoneinfo
каталог:
cd /usr/share/zoneinfo/
Когда вы войдете в этот каталог, вы увидите названия разных стран и их часовой пояс.
Команда для изменения часового пояса сервера.
sudo ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime
Если вы живете в Америке> Лос-Анджелес, вы можете изменить свой часовой пояс, используя указанную выше команду. Измените страну и штат в соответствии с вашими требованиями.
Команда для проверки даты и времени:
date
Установите время и дату из командной строки:
date -s "19 APR 2012 11:14:00"
Если у вас есть несколько пользователей с большим количеством crontab и у них разные требования к часовому поясу, вы не можете просто изменить системный часовой пояс.
Но вы все равно можете установить определенный часовой пояс, который будет использоваться только для заданий cron в конкретном crontab, установив переменную CRON_TZ в начале crontab.
Например.
#@IgnoreInspection BashAddShebang
SHELL=/usr/bin/bash
CRON_TZ=UTC
PROJECT_DIR=/home/MY_USER/MY_PROJECT
40 06 * * 1-5 $PROJECT_DIR/prod/ingest.sh >> $PROJECT_DIR/logs/ingest_cron.out 2>> $PROJECT_DIR/logs/ingest_cron.err