Некоторые из них являются частью функциональности интерпретатора, над которым вы работаете (я полагаю, вы используете bash), но его можно переопределить тем, который не является встроенным (если такой исполняемый файл существует), используя [ F2] [F3]. Остальные важные команды находятся в /bin или /sbin, которые находятся на вашем пути, что дает быстрый доступ к этим командам почти без проблем.
Вместо ntpdate (который устарел) используйте
sudo service ntp stop
sudo ntpd -gq
sudo service ntp start
. -gq сообщает демону ntp исправить время независимо от смещения (g) и немедленно выйти (q ]) после установки времени.
Используйте sntp, чтобы установить время сразу. Например:
sudo sntp -s 24.56.178.140
Число после -s может быть любым сервером времени ntp, который является NIST в Ft. Коллинз, Колорадо.
Как показали другие, лучшим решением является указание ntpd игнорировать порог паники, который по умолчанию составляет 1000 секунд. Вы можете настроить порог паники одним из двух способов:
изменить /etc/default/ntp и убедиться, что параметр -g присутствует. отредактируйте /etc/ntp.conf и поместите tinker panic 0 наверхуДо сих пор это по существу то, что рекомендовали другие, но есть еще один шаг, который, я думаю, вам следует принять. Установите программу fake-hwclock:
# apt-get install fake-hwclock
fake-hwclock: Save/restore system clock on machines without working RTC hardware
Some machines don't have a working realtime clock (RTC) unit, or no
driver for the hardware that does exist. fake-hwclock is a simple set
of scripts to save the kernel's current clock periodically (including
at shutdown) and restore it at boot so that the system clock keeps at
least close to realtime. This will stop some of the problems that may
be caused by a system believing it has travelled in time back to
1970, such as needing to perform filesystem checks at every boot.
On top of this, use of NTP is still recommended to deal with the fake
clock "drifting" while the hardware is halted or rebooting.
При установке fake-hwclock ваша машина не запустится, думая, что это 1970 год снова и снова. Когда ваш компьютер загрузится, он установит свои часы на отметку времени fake-hwclock, записанную во время последней перезагрузки / выключения. Это означает, что вы можете иметь несколько правильные часы в случае возникновения проблем с сетью при загрузке.
ntpdate - это программа, отличная от сети dameon. NTPDate, вероятно, ошибка при загрузке, потому что ntpd работает в этом сокете.
Из командной строки запустите
# sudo service ntp stop ; sudo ntpdate -s time.nist.gov ; sudo service ntp start
Вы также можете удалить ntpd все вместе (apt-get remove ntp) и добавьте скрипт cron для использования ntpdate каждый час или около того.
Служба ntp, вероятно, не будет иметь значимого значения для вас в этой системе, поэтому сначала удалите это.
# sudo apt-get remove ntp
Теперь добавьте команду:
ntpdate -sb time.nist.gov
- /etc/rclocal
Перезагрузка. Должно быть хорошо в этот момент.
rdate -s tick.greyware.com
Если все, что вы хотите сделать, это установить часы один раз, просто
Правильный способ сделать это в Debian / Mint / Ubuntu (или другой производной Debian) состоит в том, чтобы в файле
/etc/default/ntp
была строка
NTPD_OPTS="-g"
] Это гарантирует, что при запуске ntpd из сценария /etc/init.d/ntp он запускается с параметром «-g», а именно
start-stop-daemon --start --quiet --oknodo --pidfile /var/run/ntpd.pid --startas /usr/sbin/ntpd -- -p /var/run/ntpd.pid -g -u 124:128
, чтобы позволить ntpd исправить системное время, когда это более 1000 с, например, когда системное время 1 января 1970 года при запуске, потому что нет аппаратного RTC.
Попробуйте использовать опцию -b, чтобы установить время.
tlsdate устанавливает локальные часы, надежно соединяясь с TLS с удаленными серверами и извлекая удаленное время из безопасного подтверждения. В отличие от ntpdate, tlsdate использует TCP, например, подключается к удаленной службе HTTPS или TLS и предоставляет некоторую защиту против противников, которые пытаются сообщить вам информацию о вредоносном времени.
tlsdate -V -n -H encrypted.google.com
https://help.ubuntu.com/lts/serverguide/NTP.html#timedatectl
использовать timedatectl для установки времени, ntp устарел.
Алгоритмы ntpd отбрасывают смещения выборки, превышающие 128 мс, если только интервал, в течение которого нет [абсолютного значения] смещения образца меньше 128 мс, превышает 900 с. Первый образец после этого, независимо от того, что сдвиг, выполняет часы на указанное время. На практике это уменьшает частоту ложных срабатываний, когда часы выходят из строя с ошибкой до исчезающе низкого уровня.
Обычно ntpd выходит, если смещение превышает предел сантимента, который по умолчанию равен 1000 с. Это можно отключить с помощью опции -g:
-g Обычно ntpd завершает работу, если смещение превышает предел здравомыслия, который по умолчанию равен 1000 с. Если предел работоспособности установлен на ноль, проверка работоспособности не выполняется, и любое смещение является приемлемым. Эта опция переопределяет предел и позволяет установить время на любое значение без ограничений; однако это может произойти только один раз. После этого ntpd выйдет, если предел превышен. Этот параметр можно использовать с опцией -q.
как из http://doc.ntp.org/4.1.0/ntpd.htm
-Jonathan Natale [!d5 ]
Ну,
Я использую raspbian (debian wheezy) на моем малине pi, у которого нет hwclock. Мне было удобно писать небольшой скрипт и запускать его после моего интернет-интерфейса, так что я уверен, что в тот момент, когда сеть станет доступной, часы будут обновляться.
Сначала проверьте, что у вас есть ntpdate, выполнив
sudo apt-get update
sudo apt-get install ntpdate
Вам нужно добавить следующее в свой /etc/network/interfaces (конечно, eth0 здесь просто пример):
auto eth0
iface eth0 inet dhcp
post-up /usr/local/sbin/update-time.sh
И создайте следующий сценарий в /usr/local/sbin/update-time.sh (не забудьте сделать его выполнимым с помощью chmod):
#!/bin/bash
# This script checks if the ntp process is running, stops it, updates the system time, starts it again
ps cax | grep -c ntpd > /dev/null
onoff=$?
if [ "$onoff" -gt 0 ]; then
echo "stopping ntpd..."
service ntp stop
echo "ntpd stopped"
else
echo "ntpd not running, ready to update the date"
fi
isinstalled=$(dpkg-query -l | grep -c ntpdate)
if [ "$isinstalled" -gt 0 ]; then
ntpdate -t 3 -s ntp4.stratum2.ru
echo "date and time update executed"
else
echo "ntpdate package not installed, can't update using ntp"
fi
echo "restarting ntpd..."
service ntp start
echo "ntpd running"
echo "printing current date and time:"
date
exit
ntpd и ntpdate запускаются по умолчанию с использованием ограниченного порта (UDP 123). Если вы находитесь за брандмауэром, ntpd никогда не будет работать, но ntpdate может работать с опцией -u. Например: ntpdate -u 0.ubuntu.pool.ntp.org или ntpdate -u time.nist.gov должны работать нормально.
Если вы можете позволить себе подождать, сколько времени потребуется до синхронизации вашей системы, вы можете использовать команду ntp-wait:
ntp-wait || exit -1
# i believe this would exit the script if it fails, but not sure of ntp-wait return codes, learn this first.
echo Time is synced, go ahead with backup
tar
rsync etc.
Если вы находитесь в systemd, вы можете использовать эту команду:
sudo systemctl restart ntp
# or
sudo systemctl restart ntp.service
И тогда время будет обновляться в течение 10-15 секунд. Протестировано на ubuntu mate 16.04