Почему вывод следующих команд отличается?
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?
Обычно вам нужно, чтобы время устанавливалось автоматически, и в этом случае вам нужно настроить 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"
Установите аппаратные часы на текущее системное время.
# hwclock --systohc
Установите системное время из аппаратных часов.
# hwclock --hctosys
просто ntpdate ntp.ubuntu.com
и все будет хорошо.
Более подробную информацию об этом можно найти в официальной документации Ubuntu.
Другая распространенная, очень раздражающая проблема - когда выбран неправильный часовой пояс ...
Проверьте часовой пояс с выходной датой:
$ date
Пт Авг 23 18:47:04 UTC 2013
Чтобы исправить тип часового пояса:
$ sudo tzselect
и выберите правильный регион с соответствующими номерами.
Вторая задача - установить правильное время:
$ sudo date --set = "18:37:00"
Или просто найдите время у HW-Clock:
$ sudo hwclock --hctosys
В 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
Попробуй это:
date +%T -s "12:21:00"
или же
date +%T%p -s "12:22:20AM"
date +%T%p -s "12:23:30PM"
"hwclock" - это дата аппаратного обеспечения (машины), а "date" - это дата программного обеспечения (операционной системы).
Для изменения аппаратной даты ПК:
hwclock --set --date="2013-7-31 09:30"
Для изменения даты программного обеспечения:
date --set "2013-7-31 09:30"
systemctl restart ntpd
у меня работает ntpd . Это относится к RHEL и CENTOS OS.
я могу изменить текущее время в 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
через мгновение снова дал бы мне системное время.
date
возвращает время, указанное как время с момента запуска процессора плюс время, указанное внутренними аппаратными часами, hwclock
время, которое имеют внутренние часы.
Время на базе процессора имеет тенденцию дрейфовать в течение длительного времени работы машины, что является причиной существования команды hwclock --hctosys
. Также является одной из причин использования времени сетевого протокола, который используется для международной координации времени в Интернете.
Чтобы установить часовой пояс ваших системных часов, выполните следующие действия:
cp /usr/share/zoneinfo/America/La_Paz /etc/localtime
используйте это, если у вас нет клиента 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 ... и т.д.