Як ми можемо автоматично встановити часовий пояс системи за замовчуванням у Linux за допомогою Інтернету? Як я бачу, сервери NTP можуть оновлювати лише час, але не часовий пояс. Чи є сервер, який може змінити часовий пояс?
Як ми можемо автоматично встановити часовий пояс системи за замовчуванням у Linux за допомогою Інтернету? Як я бачу, сервери NTP можуть оновлювати лише час, але не часовий пояс. Чи є сервер, який може змінити часовий пояс?
Відповіді:
Нещодавно я написав програму, яка робить це: tzupdate .
Ви можете побачити, на що він встановив би ваш часовий пояс (не фактично встановлюючи його), запустивши tzupdate -p
:
$ tzupdate -p
Europe/Malta
Ви можете встановити його як справжнє, запустивши tzupdate
як root.
$ sudo tzupdate
Europe/Malta
$ date
Thu 12 Sep 05:52:22 CEST 2013
Це працює:
/etc/localtime
точці до файлу zoneinfo для цього часового поясуЦе стара нитка, але все ще актуальна для kubuntu 1710, який не змінює часовий пояс автоматично. Я використовую рішення Кріса Дауна для tzupdate, але також забезпечую його активізацію, коли система намагається підключитися до мережі (Wi-Fi або інше). Це передбачає, що ви використовуєте Менеджер мереж.
Спершу відкрийте термінал.
Встановіть tzupdate
sudo apt install python-pip
pip install -U tzupdate
Потім переконайтесь, що вона доступна всім користувачам
sudo cp -R ~/.local/lib/python2.7/site-packages/. /usr/lib/python2.7/.
sudo cp /home/marta_riba/.local/bin/tzupdate /usr/local/bin/tzupdate
Перевірте, чи працює він
sudo tzupdate
Тоді нам потрібно зробити так, щоб це було доступно для всіх користувачів
sudo su -
tzupdate
який скидає вас як root, а потім перевіряє, чи команда змінює ваш часовий пояс. Потім переконайтесь, що ви виходите, щоб повернутися як звичайний користувач
exit
Переконайтеся, що tzupdate можна запускати з sudo без пароля. Це потрібно для подальшого кроку, коли ми запускаємо це від networkmanager, який запускає це у фоновому режимі. Введіть це в терміналі, щоб редагувати файл sudoers.
sudo visudo
Додайте цей рядок у кінці файлу
ALL ALL=(root) NOPASSWD: /usr/local/bin/tzupdate
Натисніть CTRL-X, а потім натисніть Y, а потім ENTER, щоб зберегти зміни
Потім ми гарантуємо, що NetworkManager завжди викликає це після запуску зміни мережевого з'єднання (наприклад, під час підключення до wifi). Для цього ми створюємо файл під назвою tzupdate у папці dischercher.d, який просто викликає sudo tzupdate. Для запуску файлу потрібні виконавчі дозволи
echo 'sudo tzupdate'| sudo tee /etc/NetworkManager/dispatcher.d/99-tzupdate
sudo chmod +x /etc/NetworkManager/dispatcher.d/99-tzupdate
Зауважте, що NetworkManager викличе виконати sudo (тобто sudo tzupdate), який зазвичай вимагає ввести пароль.
Можливо, є кращий спосіб зробити це, наприклад, змусити NetworkManager викликати це лише тоді, коли він підключає з'єднання, а не для знизу (як це буде зроблено вище) - я спробував поставити скрипт у / etc / network / if-up .d, але це не працює для мене
Щоб перевірити це в Kubuntu - Змініть локальний часовий пояс на щось інше (перейдіть до плазмоїду Date на панелі завдань і клацніть правою кнопкою миші та виберіть "Налаштувати дату / час", а потім "TimeZone" на вкладці)
Вимкніть Wi-Fi і ввімкніть знову - ви побачите, що як тільки він підключиться до wifi, він, здається, зачекає близько 30 секунд, а потім повинен успішно змінити часовий пояс.
Зауважте, що це не перевірено на wifi, де потрібно ввести пароль на веб-сторінці. Сподіваємось, той факт, що це працює в самому кінці мережевого з’єднання, повинен забезпечити достатньо часу для введення користувачем даних облікових даних - інакше це може потребувати подальшого налаштування (перевірте, чи існує з'єднання, перевірте, чи можете ви підключитися до Інтернету, зачекайте протягом X секунд, якщо не вдалося підключитися до Інтернету, а потім повторити спробу Y раз
Не ясно, що ви маєте на увазі під "оновленням часового поясу".
Unix та Linux зберігають час як кількість секунд з 1 січня 1970 р., 00:00 UTC. Таким чином, системний годинник Unix не залежить від часового поясу. Часових поясів у ядрі Linux не існує; Лише тоді, коли додаток у просторі користувачів відображає час, інтерпретується кількість секунд з 1970 року за допомогою часового поясу. Зазвичай таке тлумачення здійснюється за допомогою функцій бібліотеки С. Часовий пояс вибирається TZ
змінною середовища. Визначення часового поясу (які складаються з назви часового поясу, зміщеного від UTC, дати, коли діє літній час, і зсувів під час DST) є частиною GNU libc і зазвичай включаються в дистрибутиви Linux як пакет "tzdata". Таким чином, оновлення визначення часового поясу є питанням працює apt-get upgrade
, yum update
або який - то подібна операція.
Зауважте, що деякі програми, наприклад, Java, мають власні файли визначення часового поясу, які потрібно оновлювати окремо.
NTP відстежує кількість секунд з 1 січня 1900 року за UTC . Тому NTP, як і ядро Unix, не має поняття часових поясів.