Установка времени линукс: Как изменить дату и время в консоли linux

Содержание

Установка, настройка и синхронизация времени в Ubuntu

Важным параметром в эксплуатации любого сервера является корректно настроенное время и его своевременная синхронизация. Как выполнить смену часового пояса в ubuntu в случае его изменения или неверного указания во время установки – одна из тем этой статьи. Также я расскажу про установку и использование программ для синхронизации времени и настройку службы точного времени ntp.

Содержание

Время и дата в Ubuntu Server

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

Кстати, если вам интересно узнать, почему я лично использую именно ubuntu server, а не какой-то другой linux дистрибутив, то читайте мой обзор и сравнение ubuntu с другими системами.

Особенно актуальной тема системного времени становится, когда вы арендуете сервера где-то в другой стране с отличным от вашего часового пояса. По умолчанию, у хостера скорее всего будет установлен его часовой пояс. Иногда я забываю это проверить и замечаю только тогда, когда возникают какие-то проблемы. А вот список проблем, которые могут теоретически возникнуть, если на сервере будет неправильное время:

  1. При просмотре логов или разборе инцидентов придется сначала переводить время в свой часовой пояс или формат, чтобы адекватно разобраться в ситуации.
  2. Если у вас настроена какая-то интеграция с доменной структурой Windows, расхождение по времени может приводить к проблемам.
  3. При использовании cron и автоматических заданий для выполнения, неправильное время на сервере может удивить вас тем, что ваши задачи будут выполнены не тогда, когда вы этого ожидаете.
  4. Если на сервере работает web сайт или почтовый сервис, время публикации постов или отправления писем будет неправильным, что создаст неудобство пользователям.

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

Утилита date

Посмотреть время в командной строке Ubuntu можно с помощью команды date.

date

В данном случае вы видите следующую информацию:

Формат вывода времени утилитой date в Ubuntu
FriДень недели, пятница
26Число месяца
MarМесяц, март
2021Год
02:01:59Время в формате час:минута:секунда
PMВремя суток в 12-ти часовом формате, PM — после полудня
UTCЧасовой пояс

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

date +"%H:%M %d/%m/%Y"
14:09 26/03/2021

Таким образом, с помощью параметров форматирования, вы можете выбирать любой формат времени для отображения. Традиционно, командная строка linux позволяет очень гибко выполнять различные действия с помощью своих утилит. Например, вы можете посмотреть не только время и дату, но и вывести в консоль номер дня недели, добавив дополнительный ключ %j:

date +"%H:%M %d/%m/%Y %j"
14:13 26/03/2021 085

Узнать время сервера в unix формате можно вот так:

date '+%s'
1616768183

Если у вас часовой пояс отличный от UTC, а вы хотите увидеть время именно в этом часовой поясе, то воспользуйтесь следующим ключом команды:

date --utc

Очень удобно использовать утилиту date с различными параметрами в скриптах, чтобы получать время в удобном для вас формате. Например, когда вы используете время в названиях файлов бэкапов при их создании. Вот несколько примеров наиболее часто используемых форматов отображения даты и времени:

date +%Y-%m-%d
2021-03-26
date +%H:%M:%S
14:36:35
date +%Y-%m-%d_%H:%M:%S
2021-03-26_14:36:42

Утилита timedatectl

В составе systemd есть своя утилита для просмотра и настройки времени через консоль — timedatectl. Далее пример с ее участием для просмотра системного времени сервера ubuntu.

timedatectl

Local timeЛокальное время данного сервера
Universal timeВремя в часовом поясе UTC
RTC timeВремя на аппаратных часах
Time zoneВаш часовой пояс

С просмотром в консоли текущего времени сервера разобрались, переходим к его настройке.

Установка и настройка времени в Ubuntu

Ручная настройка времени в ubuntu обычно не представляет какой-то особой сложности, если понимаешь, как это сделать. Для того, чтобы самостоятельно установить время через консоль, необходимо запустить date через sudo со следующими параметрами:

sudo date 03261721
[sudo] password for user: 
Fri 26 Mar 2021 05:21:00 PM UTC

В данном случае при обновлении времени мы подразумевали:

  • 03 — месяц март;
  • 26 — текущее число дня месяца;
  • 17 — часы;
  • 21 — минуты;

То есть базовый формат утилиты date следующий — MMDDhhmm.

В моих примерах время отображается в 12-ти часовом формате на английском языке. Для того, чтобы перевести его в 24-х часовой формат, нужно изменить в locale параметр LC_TIME. Именно там стоит привязка к формату. Например, в локали en_US по умолчанию используется 12-ти часовой формат, а в ru_RU или en_GB 24-х часовой.

Для того, чтобы дата в консоли отображалась на русском языке, а время в 24-х часовом формате, достаточно сформировать locale ru_RU и изменить только формат времени, оставив все остальное на английском языке.

sudo locale-gen ru_RU.UTF-8
sudo update-locale LANG=en_US.UTF-8 LC_TIME="ru_RU.UTF-8"

После этого необходимо завершить сеанс пользователя и залогиниться снова, чтобы изменение формата вступило в силу.

Еще один способ установки даты и времени с помощью timedatectl:

sudo timedatectl set-time "2021-03-26 18:09:30"

При этом вы можете получить ошибку: Failed to set time: Automatic time synchronization is enabled. Утилита timedatectl более умная, нежели date. Она проверяет, не настроена ли у вас автоматическая синхронизация времени. И если настроена, то вручную не дает его изменить. В целом, это правильный подход, хотя и может создавать неудобства. В этом случае вам надо отключить синхронизацию и только потом установить время руками. Эту тему мы будем рассматривать ниже отдельно.

Установка и настройка часового пояса в Ubuntu

Непосредственно со временем разобрались, рассмотрим теперь настройку временной зоны. Как посмотреть установленный часовой пояс, мы уже разобрались выше. Теперь разберем, как его изменить или просто задать, если ранее этого не сделали и у вас по умолчанию стоит UTC.

Установить часовой пояс можно с помощью утилит — tzselect и timedatectl. С их же помощью можно перед этим посмотреть список доступных зон. Например, так:

timedatectl list-timezones

Вы увидите длинный список временных зон, состоящий из 348 строк. Его можно будет скролить, либо сразу ограничить вывод нужным вам диапазоном.

timedatectl list-timezones | grep Europe

После того, как выбрали зону, изменяем текущий часовой пояс.

sudo timedatectl set-timezone Europe/Moscow

или с помощью tzselect:

tzselect

Мы выполнили изменение часового пояса в ubuntu как минимум двумя разными способами. Не забудьте после этого на всякий случай проверить установленную timezone. Расскажу про еще один способ, как это можно сделать в консоли. После настройки тайм зоны, на нее создается символьная ссылка от файла /etc/localtime в директорию /usr/share/zoneinfo.

ls -la /etc/localtime
lrwxrwxrwx 1 root root 35 мар 26 18:19 /etc/localtime -> ../usr/share/zoneinfo/Europe/Moscow

Меняя эту ссылку, можно так же изменять часовой пояс.

Синхронизация времени с помощью ntpdate, timedatectl

После того, как вы настроили правильную дату и нужный часовой пояс, стоит поработать над тем, чтобы часы всегда показывали точное значение минут и часов. Для этого надо настроить синхронизацию времени. Тут традиционно для linux есть несколько способов и вариантов настройки.

Первый и самый простой способ синхронизации времени в ubuntu — воспользоваться известной утилитой ntpdate.

sudo apt install ntpdate

В качестве параметра ntpdate принимает адрес сервера точного времени, с которого будет произведена синхронизация локальных часов. Я предлагаю воспользоваться популярным пулом серверов точного времени — pool.ntp.org.

sudo ntpdate pool.ntp.org

Пул автоматически выбрал сервер точного времени, с которым мы синхронизировали свои часы. Один из способов автоматизации этого процесса является запуск ntpdate через cron. Но это не очень удобное решение, так как есть более эффективные способы. Например, с помощью локальной службы ntp или chrony, а так же компонента systemd — timesyncd.

После установки системы вам стоит проверить, а не запущена ли у вас уже синхронизация времени с помощью timesyncd. Проверяем:

timedatectl timesync-status

Так и есть. В большинстве современных дистрибутивов, где установлена systemd, уже запущена timesyncd. Параметры этой службы находятся в конфигурационном файле /etc/systemd/timesyncd.conf, где можно посмотреть, какой сервер используется для синхронизации времени и в случае необходимости, заменить. В Ubuntu это ntp.ubuntu.com. Большого смысла менять его на другой сервер нет. Если только вы не хотите синхронизировать время с какого-то своего локального сервера. Как это сделать, я расскажу отдельно ниже.

Клиент ntp

Если вас по какой-то причине не устраивает служба timesyncd, можете ее отключить.

sudo systemctl stop systemd-timesyncd
sudo systemctl disable systemd-timesyncd

А в место нее установить, к примеру, ntp, работающую в режиме клиента.

sudo apt install ntp

Поясню немного, зачем это может понадобиться. Если вам необходимо только синхронизировать время, то утилиты timesyncd вполне хватает для этой простой задачи. Но иногда вам нужен более широкий функционал. Например, вы хотите настроить в своей локальной сети свой собственный сервер времени, чтобы остальные компьютеры сверяли свои часы с ним. В этом случае вам нужна будет служба ntp. А раз вы ее и так поставите, то зачем вам дублирование функционала? В этом случае имеет смысл отключить timesyncd и оставить только ntp. Она умеет работать и в качестве сервера времени, и в качестве клиента синхронизации.

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

sudo systemctl enable --now ntp

Проверяем статус синхронизации:

sudo systemctl status ntp

Видим пул серверов времени, с которыми наш ubuntu server будет синхронизировать свои часы. Настройки службы находятся в конфигурационном файле /etc/ntp.conf. Посмотреть информацию о работе ntp можно с помощью утилиты ntpq:

ntpq -p

Далее рассмотрим вариант, когда вам нужен свой сервер времени в локальной сети. Для этого донастроим установленную службу ntp.

Настройка ntp сервера

Сервер времени в своей работе использует отдельный протокол NTP (Network Time Protocol). Ему нужен для работы UDP Port 123. Так что прежде чем дальше настраивать ntp, откройте этот порт на фаерволе или отключите его. Настройка firewall выходит за рамки данной статьи, так как в его качестве может использоваться разный софт. Если у вас управление фаерволом настроено через ufw, то достаточно такой команды:

sudo ufw allow ntp

Далее открываем конфиг /etc/ntp.conf и приводим его к примерно следующему виду:

driftfile /var/lib/ntp/ntp.drift
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict 127.0.0.1
restrict 10.20.1.0 mask 255.255.255.0 nomodify notrap

pool 0.ubuntu.pool.ntp.org iburst
pool 1.ubuntu.pool.ntp.org iburst
pool 2.ubuntu.pool.ntp.org iburst
pool 3.ubuntu.pool.ntp.org iburst

logfile /var/log/ntp. log

Это минимально необходимое содержимое, чтобы запустить свой собственный сервер времени на базе ntp в локальной сети 10.20.1.0/24. Если вам не нужен протокол ipv6, то можете его отключить. Для этого в файл /etc/default/ntp добавляем параметр:

NTPD_OPTS='-4 -g'

И перезапускаем службу ntp. Проверяем, как она работает.

sudo ss -tulnp | grep ntp

Служба времени слушает все сетевые интерфейсы. Теперь с любого клиента в локальной сети можно выполнить с помощью ntpdate синхронизацию времени с нашим Ubuntu Server. Проверьте это самостоятельно. Ранее я уже показывал, как это сделать.

Ошибки синхронизации времени

TIME_ERROR: 0x2041: Clock Unsynchronized

Иногда в логе /var/log/ntp.log или системном логе /var/log/syslog вы можете наблюдать ошибку — kernel reports TIME_ERROR: 0x2041: Clock Unsynchronized. На нее можно не обращать внимание, так как реально это не ошибка, а информационное сообщение. Нам просто сообщают о том, что в момент страта службы ntp, ядро linux еще не синхронизировало время.

the NTP socket is in use, exiting

Если при запуске синхронизации времени с помощью ntpdate вы видите ошибку — the NTP socket is in use, exiting, то это значит, что у вас уже запущена служба ntp. Для того, чтобы не было конфликтов при изменении времени, должно работать что-то одно, либо ntpdate, либо ntp, но не оба одновременно. Чтобы эта ошибка исчезла, достаточно просто остановить ntp и запустить ntpdate еще раз.

no server suitable for synchronization found

Еще одна популярная ошибка, которая может возникнуть при запуске ntpdate. Она означает, что не получается по какой-то причине установить соединение с сервером времени. В общем случае это означает, что есть какие-то сетевые проблемы, но не обязательно. Вы можете попробовать запустить ntpdate c ключом -u. Он означает, что будет использован локальный не 123-й порт udp, как обычно, а другой из непривилегированного диапазона. Иногда это помогает, так как многие провайдеры из-за известной уязвимости протокола ntp блокируют исходящий 123 порт.

ntpdate -u pool.ntp.org

Служба ntp не запускается после загрузки сервера

Если ntp не стартует после загрузки сервера, то связано это может быть в первую очередь с тем, что не отключена служба timesyncd. Отключите ее и проверьте еще раз:

sudo timedatectl set-ntp no

Ubuntu меняет время и часовой пояс в bios

Убунта имеет дурную привычку при синхронизации времени устанавливать в bios часовой пояс UTC. В общем случае это не доставляет проблем, но если у вас установлена параллельно еще какая-то система на компьютере, то это может создавать проблемы. Чтобы Ubuntu не трогала часы в bios, необходимо выполнить следующую команду:

sudo timedatectl set-local-rtc 1

Время загрузки системы

Немного затрону еще одну тему, которая не связана напрямую с часами на сервере, но тем не менее имеет отношение ко времени. Эта информация наиболее актуальна как раз в этой статье.

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

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

uptime
uptime -s

Эту же информацию можно получить с помощью утилиты who:

who -b
system boot 2021-03-26 17:01

Время последнего выключения Ubuntu

Если вы хотите узнать не только время включения сервера, но и время последних выключений или время последней перезагрузки, то воспользуйтесь утилитой last:

last -x reboot

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

Заключение

Подвожу кратко итог сегодняшней статьи на тему настройки времени на сервере с ubuntu. Я рассмотрел все основные моменты, связанные с часами, часовыми поясами, а так же их синхронизацией. Если я забыл что-то важное, ошибся или у вас есть дополнения, без которых эта статья не видится вам полноценной и законченной, делитесь ими в комментариях. За это вам будет моя отдельная благодарность.

Linux — установка даты, времени, часового пояса

  • 5 февраля 2021

Установим часовой пояс, дату и время на примере сервера Ubuntu. Установим 5 февраля 2021 г 16 часов 18 минут 40 секунд, GMT+3.

Посмотреть текущую дату, время и часовой пояс:

date

Установить часовой пояс:

timedatectl set-timezone 'Europe/Moscow'

Установить дату и время в формате «ГГГГ-ММ-ДД чч-мм-сс«:

timedatectl set-time "2021-02-05 16:18:40"

Отключить/включить синхронизацию времени:

timedatectl set-ntp no
timedatectl set-ntp yes

Посмотреть список доступных часовых поясов:

timedatectl list-timezones

Дополнительно

Установить дату и время с помощью date в формате «ММДДччммГГГГ.сс«:

date 025516182021. 40
hwclock -w

Установить дату и время с помощью date:

date -s "5 FEB 2021 16:18:40"
hwclock -w

Если не указать при этом время, то оно сбросится в 0:00:00:

date -s "5 FEB 2021"
hwclock -w

Установить дату с помощью date:

date +%Y%m%d -s "20210205"
hwclock -w

Установить время с помощью date:

date -s "16:18:40"
hwclock -w

После этих операций системное время нужно сохранить в аппаратных часах:

hwclock -w

Сменить часовой пояс с помощью ссылки:

ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/locatime

Теги

  • Linux

💰 Поддержать проект

Похожие материалы

Олег
  • 9 февраля 2018
  • Подробнее о Установка VMware Tools на Ubuntu

VMware Tools — бесплатный набор утилит для улучшения взаимодействия виртуальной машины и платформы VMware. В Интернете пишут про то, что от установки VMware Tools улучшается производительность виртуальной машины. В качестве примера указывают на то, что только в этом наборе утилит есть драйвера для сетевой карты vmxnet3. Не согласен, драйвера можно и отдельно поставить. В linux так и без этих драйверов сетевая карта работает нормально. А вот если у вас Windows Server — рекомендую vmxnet3, меньше глюков.

Теги

  • Linux
  • VMware
  • Виртуализация
Олег
  • 20 марта 2018
  • Подробнее о Создать символическую ссылку в linux

Содержит адрес нужного файла или директории в файловой системе. При клике открывается файл или директория, на которую ссылается ссылка. Если удалить файл, то ссылка останется, но будет указывать в никуда.

Теги

  • Linux
Олег
  • 20 марта 2018
  • Подробнее о Linux — найти файлы по дате модификации и переместить в директорию

Если у вас есть много файлов и вы не можете их руками переместить, то воспользуйтесь командой find.

Теги

  • Linux

Почитать

opensuse — Linux устанавливает аппаратные часы в UTC и системное время в местное время

Задавать вопрос

спросил

Изменено
6 лет, 7 месяцев назад

Просмотрено
5к раз

По некоторым причинам мне приходится удаленно устанавливать время на аппаратных часах в формате UTC, а системное время — в местное время. Моя ОС — OpenSUSE 13.1, а мой инструмент — только 9Команда 0013 hwclock . Что я делаю до сих пор:

1. Синхронизировать время с помощью команды ntpdate -> системное время правильно отображается по местному времени с часовым поясом Индокитай (GMT + 7)

 дата
Вт 30 авг 14:00:00 ICT 2016
 

2. Установите аппаратные часы на UTC

 hwclock --systohc --utc
 

3. Перезагрузитесь, проверьте время BIOS. Аппаратные часы уже находятся в формате UTC, т.е. 7:00.

4. Войдите в систему. Неверное системное время.

 дата
 Вт 30 авг 07:00:00 ICT 2016
 дата -у
 Вт 30 августа 00:00:00 UTC 2016
 

5. Правильное время с помощью hwclock (Примечание: --localtime вместо --utc здесь не работает)

 hwclock --hctosys --utc
дата
Вт 30 авг 14:00:00 ICT 2016
дата -у
Вт 30 августа 07:00:00 UTC 2016
 

6. Перезагрузка, системное время опять неправильное. Повторите шаг 5, чтобы исправить это.

Это сводит меня с ума, так как я не знаю, что не так. Пожалуйста, помогите, я не хочу исправлять системное время каждый раз при загрузке машины!
PS: Содержание /etc/adjtime

 0,000000 1472543544 0,000000
1472543544
универсальное глобальное время
 
  • Linux
  • opensuse
  • часовой пояс
  • часы

2

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания, политикой конфиденциальности и политикой использования файлов cookie

Как установить часовой пояс в Linux

Важным аспектом работы любого компьютера UNIX является правильная настройка времени и часового пояса. Давайте посмотрим, как установить часовой пояс в Linux.

Часовые пояса могут быть сложными, особенно если вы и ваш Linux-сервер расположены в разных зонах.

Предназначен для того, чтобы помочь людям сохранять точное дневное и вечернее время в любой точке мира, часовые пояса не имеют большого значения для компьютера. Обычно лучше всего установить часовой пояс Linux таким, чтобы он соответствовал вашему или тому, который наблюдает большинство ваших пользователей.

К счастью, часовой пояс в Linux легко настроить даже после установки. Вот как.

Почему часовой пояс имеет значение в Linux?

Существует ряд задач, которые Linux выполняет по расписанию. Это может включать резервное копирование или проверку обновлений программного обеспечения. В идеале они должны работать, когда ваш компьютер с Linux используется не так часто, после рабочего дня. Гораздо проще согласовать это, если вы установите часовой пояс по своему собственному.

Неизбежно вам потребуется проверить файлы журналов на наличие потенциальных проблем. Понять, что происходит в 5 часов вечера, гораздо проще. означает одно и то же для вас и сервера Linux. Отсюда еще одна причина убедиться, что часовые пояса совпадают.

Проверка настроенного часового пояса в Linux

Linux предлагает несколько способов проверки часового пояса. Самый старый способ — проверить, куда указывает системный /etc/localtime . Это расположение файла задается при настройке часового пояса. На заре системного администрирования это устанавливалось путем ручного создания символической ссылки из файла нужного часового пояса на 9.0107 /etc/местное время .

Вы можете проверить это, выполнив команду ls -l /etc/localtime из терминала.

В этом примере вы можете видеть, что часовой пояс установлен на центральное стандартное время или UTC-6.

В более современном методе используется команда timedatectl , которая также используется в современных системах Linux для установки часового пояса.

Мы снова видим, что часовой пояс установлен для CST.

Как изменить часовой пояс в Linux

Мы можем использовать ту же команду timedatectl для изменения часового пояса. Однако сначала вам нужно будет знать правильное длинное имя часового пояса, который вы хотите использовать. В течение нескольких лет в Linux для определения часовых поясов использовались длинные имена, основанные на регионе и городе.

Перечислите их, выполнив команду timedatectl list-timezones с терминала. Вывод будет довольно длинным, поэтому пролистайте его с помощью пробела. После того, как вы определили правильный выбор, вы можете нажать q , чтобы остановить список команд.

Допустим, мы хотим установить часовой пояс в соответствии с местным временем в Нью-Йорке. Мы отметим список для America/New_York , который мы хотим использовать. Мы можем установить его с помощью команды sudo timedatectl set-timezone America/New_York . Затем мы проверяем, что изменение вступило в силу, используя предыдущую пустую команду timedatectl .

Это все, что нужно, но что, если ваш сервер Linux старше и не имеет timedatectl ?

Установить часовой пояс в Linux без timedatectl немного сложнее, но все равно легко. Для этого:

  1. Определите правильный файл часового пояса в /usr/share/zoneinfo .
  2. Удалить предыдущую символическую ссылку из /etc/localtime .
  3. Создайте символическую ссылку из файла правильного часового пояса на /etc/localtime .
  4. Проверьте изменение, запустив дата команда с терминала. Вывод покажет текущий часовой пояс, который я изменил обратно на центральное стандартное время.

Использование настроек Gnome для настройки часового пояса

Последнее замечание на случай, если вы управляете своим компьютером с Linux с помощью Gnome или другого графического интерфейса. Приложение настроек для Gnome, KDE и других основных сред рабочего стола предоставит возможность установить часовой пояс Linux.