Как изменить дату и время на сервере Ubuntu через командную строку?

40

Текущая дата и время сервера Ubuntu отличаются от даты и времени часового пояса. Я пытался с помощью:

sudo date "30 Sep 2015 4:43:42"

чтобы изменить его, но он не изменил дату и время, просто напечатал на терминале дату и время, которые я изменил, но когда я выполнил:

sudo hwclock --show

Дата и время все еще старые.

Как правильно изменить дату и время на Ubuntu Server?

Приска Априлия
источник
Вы действительно ввели "sudo date newdate" - слово "newdate"?
Вольфганг
1
Нет. Я отредактировал свой вопрос. Я набрал «30 сентября 2015 4:43:42»
Приска Априлия

Ответы:

68

Вы можете установить системную дату с помощью этой команды:

sudo date --set="2015-09-30 10:05:59.990"

Тогда при использовании dateэто должно быть показано правильно.

Теперь вам также следует установить аппаратные часы в BIOS системы, чтобы настройка сохранялась после перезагрузки (при запуске системное время устанавливается равным значению аппаратных часов). Сделайте это с hwclock:

sudo hwclock --systohc

Это получает значение системных часов (sys) и устанавливает аппаратные часы (hc). Проверьте это с помощью hwclockкоманды. Оба hwclockи dateтеперь должны показывать одну и ту же дату и время.


Чтобы установить часовой пояс , вы можете использовать эту команду:

sudo dpkg-reconfigure tzdata

Кстати : если вы используете эту машину в качестве сервера, я настоятельно рекомендую использовать NTP-клиент для синхронизации времени по сети . Таким образом, вы можете гарантировать, что на всех ваших серверах установлено одинаковое время. Это синхронизирует время, пока машина работает. Если у вас есть приложения, которые зависят от времени синхронизации на сервере, я рекомендую NTP-Daemon. Чем дольше он работает в фоновом режиме, тем точнее время.

хаос
источник
1
Я пропустил шаг синхронизации часов. Спасибо за ответ, он мне помог!
Приска Априлия
1
Помогает 3 варианта, он изменился и т.д. / timezone =) как php.net/manual/en/timezones.php !!! абсолютно идентичный !!!
Владимир Ч
@VladimirCh К счастью, названия часовых поясов стандартизированы, поэтому нам не нужно вносить какие-либо корректировки между системами. Ой, подождите ... есть также версия Microsoft ...
PeterM
1
Я пытаюсь изменить, но это не меняется: - $ sudo date --set = "2015-09-30 10: 05: 59.990" Ср. 30 сентября 10:05:59 +0530 2015 $ date Чт 23 мая 15:10:37 +0530 2019
Винод
8
  1. Поиск вашего часового пояса
timedatectl list-timezones
  1. Установите свой часовой пояс
sudo timedatectl set-timezone America/Toronto
  1. включить timesyncd
sudo timedatectl set-ntp on

При этом время должно быть установлено и синхронизировано.

Вы можете увидеть больше в этом руководстве: https://www.digitalocean.com/community/tutorials/how-to-set-up-time-synchronization-on-ubuntu-18-04

NatoBoram
источник
1
Лучший способ исправить это без установки часов и минут вручную! Большое спасибо!
Рафаэль Мони
4

Мне не нравится устанавливать системное время вручную. Поэтому, чтобы решить эту проблему, мне пришлось объединить два разных ответа.
Чтобы исправить системное время, вы должны использовать этот код:

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

как указано в этом ответе, то
вы синхронизируете аппаратные часы с системными часами, используя

sudo hwclock --systohc

как указано @chaos в этой теме.

twitu
источник
1

просто введите

sudo date newdatestring

с новой записью в формате nnddhhmmyyyy.ss

  • nn: (двузначный) месяц (от 01 до 12)
  • дд: (двузначный) день (от 01 до 31) с обычными правилами для дней в соответствии с месяцем и годом применения
  • чч: (двузначный) час (от 00 до 23)
  • мм: (двузначная) минута (от 00 до 59)
  • гггг: год; это может быть две цифры или четыре цифры
  • сс - две цифры секунды (от 00 до 59). Обратите внимание на период '.' до сс.

Но помимо команды date, возможно, вы предпочитаете NTP «решение» (сетевой протокол времени): Serverguide - NTP , намного проще в обращении и более точный, чем установка даты вручную. Вы можете использовать cronjob или демон ntp (ntpd), чтобы обновлять ваше время каждые x часов / минут ...

Надеюсь это поможет!

Wolfgang
источник
недопустимый диапазон дат, когда я пытался с "093005082015.15", что означает 30 сентября 2015 года, 05:08:15
Aprilia
sudo date "093005082015.15" работает на моем.
Вусан
0

Для тех, кто ищет версию эпохи секунд

  1. Установите текущую дату и время

    sudo date -s @1565864862
  2. Получить текущую дату и время

    date +%s
    

    выходы 1565864862

Йосеф Харуш
источник