Как заставить NTPD обновить дату / время после загрузки?

63

Raspberry Pi не хватает аппаратных часов. Как заставить NTPD обновлять дату / время сразу после каждой загрузки?

Я использую Raspbian, а Raspberry Pi подключен с помощью кабеля Ethernet .

Алессандро да Ругна
источник
Моя уже делает это из коробки. Какой дисто вы используете?
Гербен
Распбиан Уизи
Алессандро Да Ругна
работает как есть, как-то
lenik
1
@Thorb Pi подключен через сетевой кабель / dhcp. После загрузки у него просто нет действительной даты, это занимает некоторое время (от 10 до 45 минут)
Алессандро Да Ругна,
1
Это будет сделано автоматически через пару минут. Убедитесь, что вы установили его для использования главных часов в Национальном бюро стандартов, time.nist.gov, как описано здесь: raspberrypi.stackexchange.com/questions/68811/…
SDsolar

Ответы:

40

Сделать apt-get install ntpdate.

ntpdateбудет работать при подключении интерфейса Ethernet и устанавливать время с ntp-сервера (см. /etc/default/ntpdate).

Если ntpdон запущен, ntpdate ничего не будет делать, однако ntpdateбудет запускаться до запуска ntpdпри загрузке - так что это должно сработать, чтобы установить время при загрузке, пока есть соединение Ethernet.

н.у.к.
источник
на складе Raspbian будет все это уже.
scruss
7
@scruss мой не сделал. (2013-02-09 wheezy rasbian)
Пит Киркхэм
1
Моего тоже нет, пришлось делать это вручную.
vaindil
Если он настроен правильно, он сделает это автоматически - хотя это может занять несколько минут.
SDsolar
Linux raspberrypi 4.14.30-v7+ #1102 SMP Mon Mar 26 16:45:49 BST 2018 armv7l GNU/Linuxтоже не было
emix
36

Если ваши часы выключены, вам может потребоваться принудительно синхронизировать ntp, выполнив:

sudo /etc/init.d/ntp stop
sudo ntpd -q -g
sudo /etc/init.d/ntp start
thaspius
источник
1
Возвращает ошибку «sudo: ntpd: команда не найдена»
Pygmalion
1
Для использования команды необходимо установить ntpd
thaspius
3
Он будет установлен, я не то, что невежественные :)
Пигмалион
Не могли бы вы посетить raspberrypi.stackexchange.com/questions/47542/… ? Я разместил подробности там.
Пигмалион
3
Это было абсолютным решением моей проблемы, но я обнаружил, что оно временное, пока я не перезагрузился. В конце концов я обнаружил ошибку в выключении, что он не мог обновить hwclock, потому что часы hw имели будущую дату (понятия не имею, как это произошло). Но решение было силой обновления hwclock. Это привело к обновлению фальшивых аппаратных часов, а затем при загрузке время было, по крайней мере, близко к текущему, поэтому ntp мог нормально выполнять свою работу.
Piwaf
34

После поиска вокруг, этот метод работал для меня. Как вы знаете, Raspberry Pi 3 по умолчанию отключил NTP. Таким образом, просто набрав это, поддержка NTP будет включена:

sudo timedatectl set-ntp True

Проверить результат с timedatectl status

В случае предупреждения вам, возможно, придется бежать sudo timedatectl set-local-rtc trueтоже.

Ariyankj
источник
Спасибо, это, наконец, помогло мне, и, кажется, это правильный путь, несмотря на предыдущие ответы.
Charlies
1
Это лучший ответ, мне очень помог. Вы можете использовать sudo, чтобы избежать ввода пароля (полезно для скриптов, которые его запускают). Какова цель команды секунд? set-local-rtc
Arad
12

Если вы установите часовой пояс в raspi-configRaspberry Pi автоматически обновит время при загрузке, если он подключен к интернету.

  1. sudo raspi-config
  2. Выбрать Internationalisation Options
  3. Выбрать I2 Change Timezone
  4. Выберите свой географический район
  5. Выберите ближайший город
  6. Выбрать Finish
  7. Выберите, Yesчтобы перезагрузить сейчас
mwd27
источник
это хорошо сработало для меня
AlexG
I2 Change TimezoneОпция не существует больше
mrded
12

Смотрите сообщение на форуме Время не синхронизируется на Pi 3 и с официальным ключом .

ntpd испускает пакеты IP / UDP с полем ToS, установленным в 0xc0. Так что это очень похоже на другую проблему, с которой я (и многие другие) столкнулся с Raspberry Pi3 при работе через внутренний интерфейс Wi-Fi.

В качестве обходного пути добавьте команду

/sbin/iptables -t mangle -I POSTROUTING 1 -o wlan0 -p udp --dport 123 -j TOS --set-tos 0x00

в файл

/etc/rc.local

до выхода 0 линия. Далее перезагрузитесь и проверьте.

Прадип
источник
1
У меня была та же проблема, что и при установке RPi3, которую я получил для XMas, и вы решили мою проблему. Большой !!!
jfmessier
8

Уже должно быть обновление времени. Сервер NTPD должен запускаться сразу после файла подкачки и перед SSHD.

Проверьте файл /etc/ntp.conf, чтобы убедиться, что он настроен.

В нем должен быть указан хотя бы один сервер. Я использую time.nrc.ca для моего сервера.

Страница руководства для ntp.conf находится здесь: http://linux.die.net/man/5/ntp.conf

Род Макферсон
источник
3

Rasberry Pi моего сына не будет обновлять время «из коробки», и, попробовав все приведенные выше предложения, я смог обновить его вручную, но не автоматически. Наконец, после безуспешного поиска в другом месте, я обнаружил, что файл ntp.conf, поставляемый с Rasberry Pi, имеет следующие закомментированные строки:

#restrict 127.0.0.1
#restrict ::1

я использовал

sudo nano /etc/ntp.conf

в терминале отредактировать файл ntp conf теперь:

# Local users may interrogate the ntp server more closely. 
restrict 127.0.0.1
restrict ::1

Это решило проблему для нас. Он обновляется с помощью WiFi и Ethernet-кабеля. Я не знаю, будет ли оно обновляться через WiFi без изменения, предложенного выше для rc.local, так как к тому времени, когда я нашел решение выше, я уже внес это изменение и не отменял его.

deLabe
источник
2

Я нашел timedatectlприложение, чтобы помочь мне, когда у меня возникла похожая проблема. Он установлен по умолчанию, и «--help» дает довольно хороший и простой обзор того, как использовать инструмент.

Примечание: убедитесь, что ваш часовой пояс установлен правильно, что может делать и этот инструмент.

Адам Парсонс
источник
1

Именно такой подход я и выбрал. Многие из этих ответов, казалось, указывали на вещи, которые просто не проверялись, когда я смотрел на свою систему Raspian:

$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

У меня не было ничего, что появлялось в журналах, указывающих, что что-то timedatectlделало, или что ntpсинхронизировалось в работоспособном состоянии NIC, или что NTPD даже был установлен / настроен.

В конце я просто добавил это к своему /etc/rc.local:

$ cat /etc/rc.local
logger "Beginning force syncing NTP..."
service ntp stop
ntpd -gq
service ntp start
logger "Finished force syncing NTP..."

И установлено ntp:

$ sudo apt-get install ntp

Что приводит к этому в /var/log/syslog:

Aug  5 09:10:20 pi-hole ntp[526]: Starting NTP server: ntpd.
Aug  5 09:10:20 pi-hole ntpd[555]: proto: precision = 1.458 usec (-19)
Aug  5 09:10:20 pi-hole ntpd[555]: Listen and drop on 0 v6wildcard [::]:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listen and drop on 1 v4wildcard 0.0.0.0:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listen normally on 2 lo 127.0.0.1:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listen normally on 3 eth0 192.168.1.85:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listen normally on 4 lo [::1]:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listen normally on 5 eth0 [fe80::f5ea:7663:4ec:784d%2]:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listening on routing socket on fd #22 for interface updates
Aug  5 09:10:21 pi-hole ntpd[555]: ntpd exiting on signal 15 (Terminated)
Aug  5 09:10:21 pi-hole ntp[661]: Stopping NTP server: ntpd.
Aug  5 09:10:21 pi-hole ntpd[674]: ntpd 4.2.8p10@1.3728-o Sat Mar 10 18:03:33 UTC 2018 (1): Starting
Aug  5 09:10:21 pi-hole ntpd[674]: Command line: ntpd -gq
Aug  5 09:10:21 pi-hole ntpd[674]: proto: precision = 0.625 usec (-21)
Aug  5 09:10:21 pi-hole ntpd[674]: Listen and drop on 0 v6wildcard [::]:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listen and drop on 1 v4wildcard 0.0.0.0:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listen normally on 2 lo 127.0.0.1:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listen normally on 3 eth0 192.168.1.85:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listen normally on 4 lo [::1]:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listen normally on 5 eth0 [fe80::f5ea:7663:4ec:784d%2]:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listening on routing socket on fd #22 for interface updates
Aug  5 09:10:34 pi-hole ntpd[674]: Soliciting pool server 198.98.57.16
Aug  5 09:10:35 pi-hole ntpd[674]: Soliciting pool server 74.82.59.149
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 23.131.160.7
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 52.37.26.163
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 204.2.134.163
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 96.126.100.203
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 199.223.248.101
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 66.228.42.59
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 208.75.89.4
Aug  5 09:10:37 pi-hole ntpd[674]: Soliciting pool server 204.2.134.164
Aug  5 09:10:37 pi-hole ntpd[674]: Soliciting pool server 104.236.116.147
Aug  5 09:10:38 pi-hole ntpd[674]: Soliciting pool server 204.9.54.119
Aug  5 09:10:48 pi-hole ntpd[674]: ntpd: time set +6.769186 s
Aug  5 09:10:49 pi-hole ntpd[853]: ntpd 4.2.8p10@1.3728-o Sat Mar 10 18:03:33 UTC 2018 (1): Starting
Aug  5 09:10:49 pi-hole ntpd[853]: Command line: /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 111:114
Aug  5 09:10:49 pi-hole ntp[844]: Starting NTP server: ntpd.
Aug  5 09:10:49 pi-hole ntpd[856]: proto: precision = 0.625 usec (-21)
Aug  5 09:10:49 pi-hole ntpd[856]: Listen and drop on 0 v6wildcard [::]:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listen and drop on 1 v4wildcard 0.0.0.0:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listen normally on 2 lo 127.0.0.1:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listen normally on 3 eth0 192.168.1.85:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listen normally on 4 lo [::1]:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listen normally on 5 eth0 [fe80::f5ea:7663:4ec:784d%2]:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listening on routing socket on fd #22 for interface updates
Aug  5 09:10:49 pi-hole root: Finished force syncing NTP...
ОДС
источник
Не работает на минимальном raspbian: Failed to start ntp.service: Unit ntp.service not found.И ntpd тоже не существует. Пи определенно выигрывает время. (Я смотрю на это, потому что мои HTTPS керлы не работают без -k при запуске до этого)
Стивен Лу
@StevenLu - я обновлю A'er, чтобы включить установку ntp.
ОДС
@StevenLu -apt-get install ntp
SLM
1

Вам не нужно использовать NTP для решения проблемы. Существует скрипт, который считывает дату с сервера, и вам нужно только установить дату, которая будет результатом этого скрипта (ваш Raspberry Pi должен быть подключен к Интернету). Затем вам нужно запустить эту команду при запуске.

Шаг 1: Получить дату с сервера.

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

Шаг 2: Запустите команду при запуске, добавив ее в файл /etc/rc.local(Работает в Ubuntu 16.04).

sudo gedit /etc/rc.local

КРЕДИТЫ:

1- https://askubuntu.com/a/655528/572294

2- https://askubuntu.com/a/1199/572294

Амжад Абуджамус
источник
0

Я использую следующее в образе по умолчанию для синхронизации времени без установки дополнительных пакетов:

timedatectl set-local-rtc 0
timedatectl set-ntp 1
timedatectl status
У Хаа
источник