Я использую Ubuntu на встроенной системе на базе ARM, в которой отсутствует RTC с батарейным питанием. Время пробуждения - где-то в 1970 году. Таким образом, я использую службу NTP для обновления времени до текущего времени.
Я добавил следующую строку в /etc/rc.local
файл:
sudo ntpdate -s time.nist.gov
Однако после запуска все равно требуется пара минут, пока время не будет обновлено, в течение этого периода я не могу эффективно работать с tar
и make
.
Как я могу принудительно обновлять часы в любой момент времени?
ОБНОВЛЕНИЕ 1: Следующее (спасибо Эрику и Стефану) отлично работает из командной строки, но не обновляет часы при вводе /etc/rc.local
:
$ date ; sudo service ntp stop ; sudo ntpdate -s time.nist.gov ; sudo service ntp start ; dateThu Jan 1 00:00:58 UTC 1970 * Stopping NTP server ntpd [ OK ] * Starting NTP server [ OK ] Thu Feb 14 18:52:21 UTC 2013
Что я делаю не так?
ОБНОВЛЕНИЕ 2: Я попытался следовать нескольким предложениям, которые пришли в ответ на 1-е обновление, но, похоже, ничто на самом деле не выполняет требуемую работу. Вот что я попробовал:
- Замените сервер на
us.pool.ntp.org
- Используйте явные пути к программам
- Удалите
ntp
обслуживание в целом и оставить толькоsudo ntpdate ...
вrc.local
- Удалите
sudo
из приведенной выше команды вrc.local
Используя вышесказанное, машина по-прежнему запускается с 1970 года. Однако при выполнении этого из командной строки после входа в систему (через ssh
), часы обновляются, как только я вызываю ntpdate
.
Последнее, что я сделал, это удалил это из rc.local
и позвоните в ntpdate
в моем .bashrc
файл. Это обновляет часы, как и ожидалось, и я получаю истинное текущее время, как только доступна командная строка.
Однако, это означает, что если компьютер включен и ни один пользователь не вошел в систему, то время никогда не получает обновлений. Я могу, конечно, переустановить ntp
сервис, так что, по крайней мере, часы обновляются в течение нескольких минут с момента запуска, но затем мы возвращаемся к квадрату 1.
Итак, есть ли причина, по которой размещение ntpdate
команда в rc.local
не выполняет требуемую задачу, делая это в .bashrc
работает нормально?