Как установить текущее время в Linux?

69

Почему вывод следующих команд отличается?

root@vmi2115:/var# hwclock
Sun 26 Jun 2011 01:21:38 PM CEST  -0.273230 seconds
root@vmi2495:/var# date
Sun Jun 26 15:21:39 CEST 2011
root@vmi2115:/var# 

А можно ли изменить текущее время в Linux?

Wuffers
источник
1
Быстрый поиск Google возвращает эту ссылку:> cyberciti.biz/faq/howto-set-date-time-from-linux-command-prompt

Ответы:

90

Обычно вам нужно, чтобы время устанавливалось автоматически, и в этом случае вам нужно будет настроить ntpdавтоматическое установление времени для вас.

Специфика немного отличается от дистрибутива к дистрибутиву, но если вы, например, используете Ubuntu, есть руководство по настройке NTP в Ubuntu . В противном случае, просто Google ntpd <distribution-name>, и вы, вероятно, найдете его.

Если вы хотите установить его вручную, вы можете использовать date --set="<date string>". Примеры этого могут быть:

date --set="23 June 1988 10:00:00"
date --set="10:00:00"
Себастьян Пааске Тёрхольм
источник
37

Установите аппаратные часы на текущее системное время.

# hwclock --systohc

Установите системное время из аппаратных часов.

# hwclock --hctosys
Георгий Ташковский
источник
23

просто ntpdate ntp.ubuntu.comи все будет хорошо.

Более подробную информацию об этом можно найти в официальной документации Ubuntu.

Гангсар Свапурба
источник
18
пожалуйста, уточните свой ответ и предоставьте объяснение QA и будущим читателям, что делает упомянутая вами команда и почему вы рекомендуете такие действия. примечание: QA спросил, как изменить время, а не как синхронизировать его.
Лоренцо фон Маттерхорн
1
@LorenzoVonMatterhorn хорошо
Гангсар Свапурба
Это до сих пор не имеет объяснения. Что я должен ожидать, если я выполню эту команду?
Джеркларк
1
Отлично работал для установки точного времени.
Сабрина Гельбарт
13

Другая распространенная, очень раздражающая проблема - когда выбран неправильный часовой пояс ...

Проверьте часовой пояс с выходной датой:

$ date

Пт Авг 23 18:47:04 UTC 2013

Чтобы исправить тип часового пояса:

$ sudo tzselect

и выберите правильный регион с соответствующими номерами.

Вторая задача - установить правильное время:

$ sudo date --set = "18:37:00"

Или просто найдите время у HW-Clock:

$ sudo hwclock --hctosys

phylib
источник
3

В CentOSчасовых поясах, расположенных в /usr/share/zoneinfo/, чтобы изменить системную дату на определенный часовой пояс, вы можете:

Сначала сделайте резервную копию существующего локального файла.

sudo mv /etc/localtime /etc/localtime.bak

Далее создайте ссылку:

sudo ln -s /usr/share/zoneinfo/Europe/Lisbon  /etc/localtime

Проверьте новую системную дату, набрав date.

Чтобы настроить системную дату Linux вручную, вы можете набрать:

date -s "11 MAR 2006 11:11:11"

ИЛИ ЖЕ

date --set="11 MAR 2015 11:11:11"

ИЛИ ЖЕ

date +%Y%m%d -s "20150311"

Чтобы установить аппаратные часы на текущее системное время:

hwclock --systohc

ИЛИ ЖЕ

hwclock -w
Педро Лобито
источник
1

«hwclock» - это дата аппаратного обеспечения (машины), а «date» - это дата программного обеспечения (операционной системы).

Для изменения аппаратной даты ПК:

hwclock --set --date="2013-7-31 09:30"

Для изменения даты программного обеспечения:

date --set "2013-7-31 09:30"
Дэвид Мотилла
источник
1

Попробуй это:

date +%T -s "12:21:00"

или же

date +%T%p -s "12:22:20AM"
date +%T%p -s "12:23:30PM"
Zeroows
источник
0

dateвозвращает время, указанное как время с момента запуска процессора плюс время, указанное внутренними аппаратными часами, hwclockдает время, которое имеют внутренние часы.

Время на базе процессора имеет тенденцию дрейфовать, пока машина работает, и это является причиной существования hwclock --hctosysкоманды. Также является одной из причин использования времени сетевого протокола, который используется для международной координации времени в Интернете.

RedComet
источник
0

используйте это, если у вас нет клиента NTP

date -s $(wget -q -O - http://www.timeapi.org/eest/now | cut -d '+' -f 1 | tr -d : | tr -d - | tr -d T | cut -c 1-12)

eest in URL - ваш местный часовой пояс

Вы можете использовать utc ... и т. Д.

Ивайло Мутафов
источник
но этот работает для меня: askubuntu.com/a/683136
user956584
0

я могу изменить текущее время в Linux?

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

sudo systemctl stop systemd-timesyncd

В противном случае systemd немедленно сбросит время. После остановки службы systemd запуск dateработает как положено:

$ sudo date -s 'january 1 1971'
Fri Jan  1 00:00:00 CET 1971
$ date
Fri Jan  1 00:00:00 CET 1971

Пока служба работала, date -sкоманда работала, но dateчерез мгновение запуск снова дал бы мне системное время.

Люк
источник