Як встановити час та дату в Інтернеті?


35

Як отримати дату з Інтернету та встановити годинник мого комп’ютера з командного рядка?


3
Я не розумію низовин. Прості запитання - це те, що робить громаду потужною. Наприклад, дивіться це
Мохсен

3
Коли я наведіть курсор миші на стрілку вниз запитання вниз, я бачу: "Це запитання не показує жодних зусиль для дослідження; воно незрозуміле або не корисне". Мені б сподобалося оскаржити ваше запитання на основі першого (без вказівки на те, що ви знайшли), другого (без вказівки на якій конкретній платформі ви працюєте, і чому це повинно бути командний рядок (замість звичайного демона часу) ) і третє (для більшості * nix користувачів буде встановлено деякий час демона за замовчуванням).
Антон

+1 Я також не розумію суттєвих питань, просто тому, що це щось, що раніше мене клопоче багато разів, і здається, що неможливо знайти щось стисле та корисне щодо цієї конкретної теми.
l0b0

@Mohsen Я не спровокував, але відмінність питання, яке ви пов’язали, полягає в тому, що switchв рубіні немає, тоді як ви можете встановити дату безпосередньо date -s(як показано на сторінці сторінки) або використовувати будь-яку з описаних нижче команд ...
Ульріх Дангел

1
@Anthon Я не погоджуюся: це питання стосується невеликого пристрою з BusyBox, який робить загальну пораду "використовувати NTP" не обов'язково застосувати
Gilles "SO- перестань бути злим"

Відповіді:


29

Ви можете використовувати:

sudo dpkg-reconfigure tzdata

для налаштування свого часового поясу.

Для оновлення часу та дати з Інтернету використовуйте наступне:

Встановити

Якщо ntpd не встановлений, використовуйте будь-яку з наступних команд для встановлення ntpd:

  • Для RPM на основі:

    yum install ntp 
    
  • Для Debian:

    sudo apt-get install ntp
    

Конфігурація

Ви повинні принаймні встановити наступний параметр у /etc/ntp.conf конфігураційному файлі: сервер

Наприклад, відкрийте файл /etc/ntp.conf за допомогою текстового редактора vi:

  # vi /etc/ntp.conf

Знайдіть параметр сервера та встановіть його так:

  server pool.ntp.org

Збережіть файл та перезапустіть службу ntpd:

  # /etc/init.d/ntpd start

Ви можете синхронізувати системний годинник з сервером NTP негайно за допомогою наступної команди:

  # ntpdate pool.ntp.org

* Для встановлення часу та дати вручну використовуйте наступний синтаксис:

 date --set="STRING"

Наприклад, встановіть нові дані на 2 жовтня 2006 18:00:00, введіть таку команду як root користувача:

# date -s "2 OCT 2006 18:00:00"

АБО

# date --set="2 OCT 2006 18:00:00"

Ви також можете спростити формат, використовуючи наступний синтаксис:

# date +%Y%m%d -s "20081128"

Для встановлення часу використовуйте такий синтаксис:

# date +%T -s "10:13:13"

Де,

10: Година (год) 13: Хвилина (мм) 13: Друга (с)

Використовуйте еквівалент локальної мови% p або AM, або PM, введіть:

# date +%T%p -s "6:10:30AM"

# date +%T%p -s "12:10:30PM"

Хоча інформація про дату видається дійсною, вона ніде не бере до уваги вимогу from the internetз назви ОП.
Антон

Я вважаю, що пакет tzdata (дані часового поясу) синхронізує дані лише з Інтернету. Виправте мене, якщо я помиляюся.
tusharmakkar08

3
tzdata - це інформація про часові пояси та літній час (початок, кінець, епоха), а не фактична дата та час. Звичайно, зручно знати, як дістатися до місцевого часу, виходячи з знань про ваш часовий пояс і час UTC, але ви все ще повинні отримати останні з Інтернету.
Антон

Ви неправі. Дані часового поясу мають бути оновлені (оскільки постійно відбуваються зміни), Але НЕ автоматично оновлюється з Інтернету. НОР встановлює час з Інтернету.
Ульріх Дангель

@Anthon: Відповідь я відредагував відповідним чином. Дякую.
tusharmakkar08

23

Невеликий код, який я знайшов, щоб оновити ваш час, якщо ви не хочете нічого встановити, щоб оновити дату. :)

sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"

1
Я використовую google.inдля отримання поточного часу для мого часового поясу (Індія).
Ділавар

Зверніть увагу на Zте, що час вказано в часовому поясі зулу, тому особливих маніпуляцій із часовим поясом не потрібно, якщо часовий пояс комп'ютера встановлений правильно.
користувач202729

10

Я використовую це:

sudo ntpd -qg; sudo hwclock -w

спочатку скажіть ntpd, щоб просто встановити час і зупинитись після цього з -q. Крім того, у випадку, якщо ваш годинник має велику помилку, нам потрібно повідомити ntpd, щоб у цьому випадку також було налаштовано з -g. Нарешті запишіть годинник на апаратне забезпечення, щоб зберегти зміни при перезавантаженні з hwclock -w (-w для встановлення апаратних годин на поточний системний час, є різниця).


1
я схильний робити це з "&&" замість крапки з крапкою з комою, так що якщо перша команда не вийде (наприклад, підключення мережі), друга команда є короткозамкненою
Theophrastus,


5

Деякі дистрибутиви доставляють оновлення з цією метою. Основне використання:

# just query
bash-4.2$ rdate pool.ntp.org
rdate: [pool.ntp.org]   Wed Jun 12 11:05:40 2013

# set system time
bash-4.2$ rdate -s pool.ntp.org

Шлях краще і простіше, ніж ntp
andrewtweber

pool.ntp.orgтепер відмовляється від з'єднань rdate. time.nist.govпрацює. Крім того, як тільки ви встановили системний час, вам слід встановити апаратний годинник, запустивши його, hwclock -wщоб встановити його на системний час. Потім ви можете переконатися, що це правильно, запустившиhwclock -r
MatthewLee

5

Після деяких досліджень я закінчився цим. Я також застосував його до власного сервера:

sudo apt-get install ntp
sudo dpkg-reconfigure ntp
ntpq -p

Якщо в останній команді відображається дійсний список серверів, ви добре піти. Команда запустить досить складний набір алгоритмів, який, крім іншого, повторить ваш дрейф тактової частоти та компенсує їх. У вас вийде досить точний годинник, навіть якщо ви втратите з’єднання з серверами NTP. Однак команді потрібно кілька хвилин, щоб розпочати роботу.

Джерело: тут і тут .


0

Щоб знайти "однолітків" (хостів, на які ви можете запитувати), ви можете скористатися ntpq -p .

Якщо у вас вже працює служба NTP, вам потрібно зупинити її перед оновленням вручну, наприклад, використовуючи sudo service ntp stop .

Тепер ви можете запитувати однолітків, наприклад, використовуючи sudo ntpdate "peer".


0

Використовуючи інструмент оновлення , як пропонується у відповіді манатурки , але з протоколом SNTP -nта -4параметрами IPv4 на:

# just print synced time, not set
rdate -n -4 -p time-a.nist.gov

# print and set synced time
sudo rdate -n -4 time-a.nist.gov

Інструмент може бути встановлений на Debian таким чином:

sudo apt-get install rdate

0

Окрім відповіді Тушара , мені також довелося це зробитиapt-get install ntpdate на моїй Ubuntu 14.04.

Опублікувати як відповідь, оскільки репутації недостатньо для коментування.


0

Я також шукав періодичне скидання годинника не ntp / ntpd. Мені сподобався розбір заголовка google.com, але виявив, що він не працює на ubuntu. Я думаю, що це також буде працювати на Raspberry Pi.

sudo date +"%d %b %Y %T %Z" -s "$(wget -qSO- --max-redirect=0 http://google.com 2>&1 | grep '^  Date:' | cut -d' ' -f 5-)"

Також альтернатива використання curl замість wget.

sudo date +"%d %b %Y %T %Z" -s "$(curl -s --head http://google.com | grep '^Date:' | cut -d' ' -f 3-)"

Тестовано на PI з Cellular Network і результати схожі:

Using host & wget -- RCV: 1324 bytes SND: 581 bytes
Using host & curl -- RCV: 1318 bytes SND: 567 bytes

Примітка. Я використовую хост, щоб дозволити google.com до IP-адреси, щоб я міг відкривати лише той IP протягом тривалості цієї команди за допомогою iptables.

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