Как получить дату из Интернета и установить часы моего компьютера из командной строки?
источник
Как получить дату из Интернета и установить часы моего компьютера из командной строки?
Вы можете использовать :
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
из заголовка ФП.
Небольшой код, который я нашел, чтобы обновить ваше время, если вы не хотите устанавливать что-либо только для обновления даты. :)
sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"
google.in
чтобы узнать текущее время для моего часового пояса (ИНДИЯ).
Z
который указывает, что время указывается в часовом поясе Зулу, поэтому не требуется никаких специальных манипуляций с часовым поясом, если часовой пояс компьютера установлен правильно.
Я использую это:
sudo ntpd -qg; sudo hwclock -w
сначала скажите ntpd просто установить время и после этого остановиться с помощью -q. Кроме того, в случае, если ваши часы имеют большую ошибку, мы должны сказать ntpd, чтобы в этом случае также настраивался с -g. Наконец, запишите часы на аппаратное обеспечение, чтобы сохранить изменения при перезагрузке с помощью hwclock -w (-w для установки hardwareclock на текущее системное время, есть разница).
Используйте ntpdate, ntpd или Chrony для подключения к NTP-серверу.
Некоторые дистрибутивы поставляются rdate для этой цели. Основное использование:
# 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
pool.ntp.org
сейчас отказывается от подключений от rdate
. time.nist.gov
работает. Также, после того как вы установили системное время, вы должны также установить аппаратные часы, запустив их hwclock -w
для установки системного времени. Затем вы можете убедиться, что это правильно, запустивhwclock -r
После некоторого исследования я закончил с этим. Я также применил это к моему собственному серверу:
sudo apt-get install ntp
sudo dpkg-reconfigure ntp
ntpq -p
Если последняя команда показывает действительный список серверов, вы можете идти. Команда запустит довольно сложный набор алгоритмов, которые, помимо прочего, итерируют ваш сдвиг часов и компенсируют их. У вас получатся довольно точные часы, даже если вы потеряете соединение с NTP-серверами. Однако команде требуется несколько минут, чтобы начать работу.
Чтобы найти "пиров" (хосты, которые вы можете запросить) вы можете использовать ntpq -p
.
Если у вас уже запущена служба NTP, вы должны остановить ее перед обновлением вручную, например, с помощью sudo service ntp stop
.
Теперь вы можете сделать запрос к пиру, например, используя sudo ntpdate "peer"
.
Использование инструмента rdate , как предложено в ответе manatwork , но с протоколом 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
В дополнение к ответу Тушара , я также должен был сделать apt-get install ntpdate
на своем Ubuntu 14.04.
Публикация в качестве ответа, потому что репутации недостаточно для комментирования.
Я также искал не 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 с сотовой сетью и результаты аналогичны:
Using host & wget -- RCV: 1324 bytes SND: 581 bytes
Using host & curl -- RCV: 1318 bytes SND: 567 bytes
Примечание. Я использую host, чтобы разрешить google.com IP-адрес, чтобы я мог открыть только этот IP-адрес во время выполнения этой команды с помощью iptables.
switch
в ruby нет, хотя вы можете напрямую установить дату черезdate -s
(как показано на странице руководства) или использовать любую из команд, описанных ниже ...