Як встановити Ubuntu для синхронізації годинника з сервером часу?


23

Я хотів би, щоб Ubuntu автоматично синхронізував свій системний годинник із таймером при запуску.

Однак мій ПК не підключений до Інтернету лише після того, як я ввійшов (плюс 5 - 10 секунд для хорошої міри).

Як я можу це зробити для цього?


2
Тут вже є чудові відповіді, які пояснюють, як встановити ntpd, щоб ваш комп'ютер постійно тримався в синхронізації з серверами часу в Інтернеті, але я просто хотів додати, що за замовчуванням Ubuntu синхронізує час з ntp.ubuntu.com щоразу, коли ваш мережевий інтерфейс з'явиться "вгору" (наприклад, при запуску комп'ютера). Схоже, це не відбувається у вашому випадку через спосіб підключення до Інтернету, але інші читачі не повинні вважати, що Ubuntu не синхронізує час без встановлення ntpd.

Ось, що пояснює, як встановити його на time.nist.gov: askubuntu.com/questions/972799/…
SDsolar

Відповіді:


32

Це робиться за допомогою NTP, щодо якого доступні інструкції . В основному вам потрібно буде встановити демон NTP. Здається, є кілька варіантів, але "стандартний" є в упаковці ntp. Відповідно до інструкцій на пов’язаній сторінці,

sudo apt-get install ntp

отримає все налаштоване для синхронізації з NTP-сервером Ubuntu.

EDIT : Я пропустив "при запуску". Зазвичай рекомендується використовувати ntpd для постійної синхронізації між вашою системою та сервером, але якщо ви дійсно хочете синхронізуватись лише один раз, відповідь mfisch здається тим, що ви шукаєте.


3
Я думаю, що в цілому йому було б краще просто мати ntpd, який завжди працює, і просто не вдається підключитися, коли він не був в Інтернеті, це аж ніяк не шкідливо. З урахуванням сказаного, мій метод також повинен працювати;)
mfisch

Я гаразд, коли це працює постійно.
Натан Осман

1
Джордж, просто зроби це. Я сподівався відповісти на ваше "справжнє" запитання, оскільки найприємніша річ у світі - це таке запитання, і всі відповіді мають бути "чому ти хочеш це робити?"
mfisch

Для Ubuntu 18.04 більше застосовується порада встановити ntpd. За замовчуванням systemd-timesyncd.service синхронізує час.
ernstkl

9

Якщо ви перейдете до "Система-> Адміністрація-> Час і дата", ви отримаєте GUI для встановлення дати / часу.

Надається можливість використання серверів часу. Якщо ви перевірите це, і NTP не встановлений, він запитає, чи хочете ви встановити його. Просто натисніть "так", і нехай це робить свою роботу :)


Забув річ "стартап". NTP регулярно виконує свою роботу, а це означає, що вам слід синхронізуватися щоразу, коли ви знаходитесь в мережі ... Але єдиний спосіб переконатися в тому, щоб використовувати якийсь сценарій, передбачений mfisch. Тепер, якщо чесно: після синхронізації мало шансів на те, що ваш комп'ютер зіпсується на годиннику. Отже, якщо ви використовуєте синхронізацію часу за замовчуванням і дозволяєте це робити у фоновому режимі, вам слід добре пройти більшу частину часу, не роблячи більше нічого.
Маленька Ява

Хіба це не позначено "Час і дата"?
Firefeather

@Firefeather: цілком може бути. У мене немає англійського інтерфейсу, тому я не можу сказати;)
Маленька Ява

Ах, нерозумно мене, забувши про інтернаціоналізацію. Моя система en-us позначає це "Час і дата".
Firefeather

6

Це можна зробити, використовуючи at і ntpdate . at, мабуть, уже встановлено, але ntpdate може не бути. (apt-get install ntpdate).

Спочатку створіть невеликий скрипт, який виконує ntpdate, і дозволить йому назвати update_time.sh.

#!/bin/bash
ntpdate pool.ntp.org

У свій .bash_login файл (який вам може знадобитися створити) додайте це:

at -f ~/update_time.sh now + 1 minute

Це має робити те, що ти хочеш. Ви можете змінити затримку, яка при використанні становить 5 хвилин, 10 хвилин і т.д.

EDIT: Я щойно зрозумів, що для запуску вам потрібно мати root ntpdate. Вам потрібно буде встановити біт SUID для сценарію update_time.sh, який я згадав. Ви можете зробити це, запустивши це з команди (запустити її потрібно лише один раз):

sudo chmod 4711 update_time.sh
sudo chown root update_time.sh

1
iirc Ви не можете встановити suid на .sh-скрипти.
Брам

Чи можете ви зробити заявку на ntpdate безпосередньо тоді? Це, мабуть, здійснить те саме.
mfisch

2
Навіщо використовувати at? І якщо ви збираєтеся автоматично запускати ntpdate, чому б не просто встановити ntpпослугу?
Reinier Post

1
Примітка: ntpdate більше не встановлений за замовчуванням на Ubuntu (16.04+) і був застарілий на користь timedatectl. timedatectl керує службою timeyncd systemd, яка використовується за замовчуванням для синхронізації часу.
Корі Голдберг

0

Оскільки Ubuntu 16.04 timedatectl / timesyncd (які є частиною systemd) замінює більшість ntpdate / ntp. Див. Розділ Синхронізація часу .

Можливо, вам буде потрібно активувати синхронізацію часу за допомогою:

$ sudo timedatectl set-ntp on

Якщо ви хочете використовувати chrony:

  • Якщо вам потрібна синхронізація одним знімком: $ chronyd -q

  • Якщо вам потрібна перевірка часу одним знімком, не встановлюючи використання часу: $ chronyd -Q

  • Для постійної синхронізації рекомендованим рішенням є хроніка:

хроніка (г)

Хронід демона NTP обчислює дрейф і зміщення ваших системних годин і постійно регулює його, тому немає великих виправлень, які можуть призвести, наприклад, до несуперечливих журналів. Вартість невелика потужність процесора та пам'яті, але для сучасного сервера це, як правило, незначно. Установка

Щоб встановити chrony, з підказки терміналу введіть:

$ sudo apt install chrony

Можливо, вам також знадобиться активувати

sudo timedatectl set-ntp увімкнено

Оновлення: Ще один метод, якщо вищезгадане не працює, - це встановити роботу cron для запуску$ chronyd -q

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.