Как мы можем автоматически установить системный часовой пояс по умолчанию в Linux, используя Интернет? На мой взгляд, NTP-серверы могут обновлять только время, но не часовой пояс. Есть ли сервер, который может изменить часовой пояс?
linux
networking
timezone
geolocation
Встроенный программатор
источник
источник
Ответы:
Я недавно написал программу, которая делает это: tzupdate .
Вы можете увидеть, на что он установил бы ваш часовой пояс (фактически не устанавливая его), запустив
tzupdate -p
:Вы можете установить его по-настоящему, запустив
tzupdate
от имени пользователя root.Это работает:
/etc/localtime
указатель на файл zoneinfo для этого часового поясаисточник
Это старая тема, но она по-прежнему актуальна для kubuntu 1710, которая не меняет часовой пояс автоматически. Я использую решение Криса Дауна для tzupdate, но также гарантирую, что оно срабатывает, когда система пытается подключиться к сети (Wi-Fi или другое). Это предполагает, что вы используете Network Manager.
Сначала откройте терминал.
Установить tzupdate
Затем убедитесь, что он доступен для всех пользователей
Проверьте, что это работает
Затем нам нужно убедиться, что это доступно всем пользователям.
который возвращает вас как root и затем проверяет, что команда меняет ваш часовой пояс. Затем убедитесь, что вы выходите, чтобы вернуться как обычный пользователь
Убедитесь, что tzupdate может быть запущен с sudo без пароля. Это необходимо для следующего шага, когда мы запускаем это из сетевого менеджера, который запускает это в фоновом режиме. Введите это в терминале, чтобы отредактировать файл sudoers
Добавьте эту строку в конец файла
Нажмите CTRL-X, затем нажмите Y и затем ENTER, чтобы сохранить изменения
Затем мы гарантируем, что NetworkManager всегда вызывает это после запуска изменения сетевого подключения (например, при подключении к Wi-Fi). Для этого мы создаем файл с именем tzupdate в папке dispatcher.d, который просто вызывает sudo tzupdate. Для запуска файла требуются разрешения на выполнение
Обратите внимание, что NetworkManager вызовет execute sudo (т.е. sudo tzupdate), который обычно запрашивает пароль.
Возможно, есть лучший способ сделать это, то есть заставить NetworkManager вызывать его только тогда, когда он устанавливает соединение, а не отключает его (как это будет делать выше) - я попытался поместить скрипт в / etc / network / if-up. .d, но это не сработало для меня
Чтобы проверить это в Kubuntu: измените местный часовой пояс на другой (перейдите к плазмоиду Дата на панели задач, щелкните правой кнопкой мыши и выберите «Настроить дату / время», а затем «TimeZone» на вкладке)
Выключите Wi-Fi и снова включите его - вы увидите, что, как только он подключится к Wi-Fi, он будет ждать около 30 секунд, а затем должен успешно изменить часовой пояс.
Обратите внимание, что это не было проверено с Wi-Fi, где нужно ввести пароль на веб-странице. Надеемся, что тот факт, что это выполняется в самом конце сетевого подключения, должен предоставить пользователю достаточно времени для ввода учетных данных - в противном случае это может потребовать дополнительной настройки (проверьте, существует ли подключение, проверьте, можете ли вы подключиться к Интернету, подождите в течение X секунд, если не удается подключиться к Интернету, а затем повторите попытку Y раз
источник
Непонятно, что вы подразумеваете под «обновлением часового пояса».
Unix и Linux хранят время как количество секунд с 1 января 1970 года, 00:00 UTC. Поэтому системные часы Unix не зависят от часового пояса. Часовые пояса не существуют в ядре Linux; только когда приложение пользовательского пространства отображает время, которое количество секунд с 1970 года интерпретируется с использованием часового пояса. Обычно эта интерпретация выполняется с помощью функций библиотеки C. Часовой пояс выбирается
TZ
переменной среды. Определения часовых поясов (которые состоят из имени часового пояса, смещения от UTC, дат вступления в силу летнего времени и смещений во время летнего времени) являются частью GNU libc и обычно включаются в дистрибутивы Linux в виде пакета "tzdata". Таким образом, обновление определения часового пояса является вопросом работаетapt-get upgrade
,yum update
или какой - то подобная операция.Обратите внимание, что некоторые программы, такие как Java, имеют собственные файлы определения часовых поясов, которые необходимо обновлять отдельно.
NTP отслеживает количество секунд с 1 января 1900 года по UTC . Поэтому NTP, как и ядро Unix, не имеет понятия часовых поясов.
источник