Вопрос или проблема
Здесь, во Франции, полночь 00:00 — это конец дня, на английском это начало дня.
В таблице cron, если пакет запланирован на 00:00 в пятницу, он завершится в утро пятницы.
Мой вопрос: Изменение локали и временной локали изменяет ли определение полуночи?
Если я настрою сервер с французской локалью, закончится ли пакет, запланированный на 00:00 в пятницу, в субботу утром?
Я знаю, что в общем употреблении «minuit» во французском — это полночь в конце дня, но даже с французской локалью 0:00 указывает на полночь в начале дня:
$ LC_ALL=fr_FR.UTF-8 date -d ""
mar. 26 nov. 2024 00:00:00 CET
Задание cron, запланированное на 0:00 в пятницу и работающее менее двенадцати часов, завершится в утро пятницы.
Ответ или решение
Конечно, определение времени полуночи (00:00) и его значение может вызвать путаницу в различных культурах и языках. Действительно, в разных языковых и культурных контекстах полуночное время может трактоваться по-разному. Однако, когда дело касается системного времени и расписания задач, как в случае с cron, есть определенные стандартные практики, которые помогут прояснить этот вопрос.
Полуночное время в контексте cron
Определение полуночи:
В большинстве компьютерных систем, включая cron, промежуток времени в 00:00 считается началом нового дня. Это значит, что задача, запланированная на 00:00 в пятницу, будет запущена в самом начале пятницы, а не в конце четверга. Таким образом, если у вас есть задача, которая выполняется в 00:00 пятницы, она начнет выполняться сразу при наступлении пятницы.
Влияние локали:
Вопрос о том, меняет ли локаль определение полуночи, на самом деле не имеет значения для cron. Локализация может влиять на формат отображения времени и даты, но не изменяет саму логику работы cron. Например, вы можете установить французскую локаль, но cron по-прежнему будет трактовать 00:00 как начало пятницы, а не как конец четверга.
Технические аспекты
Когда вы настраиваете сервер с французской локалью, это влияет только на то, как время может отображаться пользователю в различных командах Linux или Unix (например, в командах date
, locale
, и нескольких других). Тем не менее, в самом cron эта локаль не будет оказывать влияния на расписание. Задача, запланированная на 00:00, по-прежнему будет выполняться в начале дня, как это предусмотрено в спецификациях cron.
Пример:
Если вы запланируете задание в cron с записью:
0 0 * * 5 /path/to/script.sh
Это будет означать, что script.sh
будет запущен в 00:00 в пятницу. Если это задание выполняется менее 12 часов, оно завершится в пятницу, а не в субботу.
Заключение
Таким образом, независимо от того, как используется слово «полуночь» в разных культурах, для cron это всегда начало дня, и изменение локали не изменит эту логику. Поэтому, даже если ваш сервер настроен с французской локалью, задача, запланированная на 00:00 пятницы, будет завершена в утренние часы пятницы.
Если у вас есть дополнительные вопросы или вы хотите более подробно рассмотреть другие аспекты работы cron, пожалуйста, дайте знать!