Linux устанавливает время из консоли

Обновлено: 21.11.2024

Отслеживайте время в Linux, настроив системную дату и время с помощью команды timedatectl.

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

Точное время и дата в системе не только сообщают вам правильное время, но также позволяют выполнять автоматизированные задачи в соответствии с вашими ожиданиями и беспрепятственно подключаться к службам через Интернет.

В этом руководстве показано, как просматривать, настраивать и настраивать время и дату в Linux из командной строки с помощью команды timedatectl.

Как управлять временем в Linux

Для обеспечения точного времени в Linux используются часы двух разных типов:

  • Часы реального времени (RTC) или аппаратные часы, встроенные в печатную плату вашего компьютера и работающие независимо от операционной системы. Часы продолжают работать, даже если ваша операционная система выключена, перезагружена или находится в спящем режиме.
  • Системные часы, также известные как программные часы. Поддерживаемые ядром Linux, системные часы зависят от часов реального времени, чтобы получить начальное время при загрузке ОС Linux.

По умолчанию ваше системное время хранится в формате универсального скоординированного времени (UTC). Затем ваша система Linux преобразует время UTC в правильное местное время в зависимости от вашего региона или часового пояса. Местное время отображается на рабочем столе.

Вывод информации о времени и дате

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

Чтобы отобразить время и другие параметры конфигурации, просто запустите команду timedatectl без каких-либо параметров следующим образом:

Эта команда отображает системное местное время, время в формате UTC и часы реального времени. Часовой пояс и другие важные параметры, связанные со временем, также перечислены в выходных данных.

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

Чтобы установить или изменить время, используйте команду timedatectl вместе с подкомандой set-time.

Примечание. Для настройки времени или даты необходимы повышенные права.

В вышеупомянутой команде чч обозначает часы, мм — минуты, а сс — секунды. Указываемое время должно быть в 24-часовом формате.

Например, чтобы установить время на 12 часов ночи, выполните следующую команду:

Эта команда обновляет как часы реального времени, так и системные или программные часы. Однако вы не сможете изменить время или дату, если в вашей системе включен сетевой протокол времени (NTP).

Как включить/отключить NTP

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

Чтобы отключить NTP в Linux, выполните следующую команду:

Чтобы снова активировать или включить NTP, просто запустите:

После включения система автоматически настраивает и синхронизирует время с настроенным временем сервера.

Примечание. Подкоманда set-ntp не будет работать, если ваша система не поддерживает NTP.

Как установить дату в Linux

Чтобы изменить дату на вашем компьютере, вы можете запустить команду timedatectl с подкомандой set-time в следующем формате:

<р>. где ГГГГ — год, ММ — месяц, а ДД — день.

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

Обратите внимание, что мы также указали время, потому что, если вы укажете только дату, timedatectl автоматически установит время на 00:00, т. е. 12 часов ночи.

Изменение часового пояса

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

Используйте клавишу F на клавиатуре для прокрутки вперед и клавишу B для прокрутки списка часовых поясов назад. Кроме того, вы можете использовать клавиши со стрелками для прокрутки.

Определив свой часовой пояс, вы можете, например, переключиться на часовой пояс Африки/Блантайра с помощью следующей команды:

Получение справки из командной строки

Чтобы узнать больше о timedatectl, введите следующую команду:

Чтобы получить более полное представление о команде, вы можете просмотреть ее справочные страницы, выполнив:

Альтернативные утилиты учета рабочего времени в Linux

В этом руководстве показано, как настроить время и дату в Linux с помощью утилиты timedatectl, мощной и современной программы для настройки часов, которая входит в состав службы systemd. Другими традиционными утилитами настройки часов в Linux являются команды hwclock и date.

Вы можете использовать, например. date --set='-2 years', чтобы перевести часы на два года назад, оставив все остальные элементы идентичными. Таким же образом можно изменить месяц и день месяца.Я не проверял, что произойдет, если этот расчет приведет к дате и времени, которого на самом деле не существует, например. во время переключения на летнее время, но поведение должно быть идентичным обычному поведению «установить дату и время на конкретные значения».

Предполагая, что вы пытаетесь установить дату на текущее время, вы можете выполнить команду sudo ntpd -gq для автоматического обновления системы с помощью службы ntp.

6 ответов 6

Запустите это как root или под sudo . Изменение только одного года/месяца/дня является более сложной задачей и потребует повторения битов текущей даты. В основные среды рабочего стола также встроены инструменты для работы с датами с графическим интерфейсом, доступ к которым обычно осуществляется через часы.

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

изменит дату, но сохранит время. Подробности форматирования для создания других комбинаций см. в man date: отдельными компонентами являются %Y , %m , %d , %H , %M и %S .

Это невозможно. Вы можете использовать date -s "2014-12-25 $(date +%H:%M:%S)", чтобы изменить дату и повторно использовать текущее время.

Системное время

Вы можете использовать дату, чтобы установить системную дату. Реализация даты GNU (имеющаяся в большинстве невстроенных систем на базе Linux) принимает множество различных форматов для установки времени, вот несколько примеров:

установить только год:

установить только месяц:

установить только день:

установить все вместе:

Аппаратное время

Теперь системное время установлено, но вы можете синхронизировать его с аппаратными часами:

Используйте --show для вывода аппаратного времени:

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

Или системное время по аппаратным часам

Бонусные баллы за демонстрацию неочевидных способов установки даты на примерах и за указание разницы между «системным временем» и «аппаратными часами». Очень полезный ответ!

Командой для изменения системной даты является date .

Есть два способа вызвать команду даты (в Linux):

Проще всего использовать date -s, так как это позволяет использовать простые относительные даты

Таким образом, изменить любую часть относительной даты так же просто, как назвать ее:

С абсолютными датами немного сложнее, так как они требуют более подробной информации:

Или вы можете использовать команду даты дважды:

замените любой из % допустимым значением, и дата будет установлена ​​(только как root).

Вторая форма вызова даты используется для прямого изменения системной даты.

Установит дату 23 ноября в 08:00 и 12:00.

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

Или, если вы действительно хотите изменить дату, от имени пользователя root:

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

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

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

11 ответов 11

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

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

Однако, если вы хотите установить его вручную, вы можете использовать date --set . Примерами этого могут быть:

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

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

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

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

Еще одна распространенная и очень неприятная проблема – это когда выбран неправильный часовой пояс.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Команда date отображает дату и время системы. Это позволяет пользователю получать дату и время в разных форматах. Эта команда также помогает вычислять текущие, прошлые и будущие даты с помощью различных операторов и спецификаторов формата. Для выполнения функций системные часы и часы сервера должны быть точно по времени. Вот несколько примеров, которые расширят ваши знания о команде date в Linux.

Предпосылки

Чтобы изучить функциональные возможности команд даты и их использование, в вашей системе должен быть установлен Linux (Ubuntu). После установки вам необходимо настроить Linux, указав данные пользователя, включая имя и пароль, для доступа к приложениям. На изображении ниже показан интерфейс Ubuntu. Здесь вам нужно указать пароль, чтобы продолжить.

Синтаксис даты

Основной командой, используемой для отображения даты, является ввод «Дата». Он приносит текущую дату и время, которые автоматически получены из системы. Вывод показывает день месяца, число, год и время. Команда Date получает дату операционной системы.

Команда даты руководства пользователя

Чтобы узнать больше о командах, связанных с датами, пользователю доступно ручное руководство. Вывод показывает следующее описание.

Получить даты в разных форматах

Даты могут отображаться несколькими альтернативными способами. Клавиша «D» будет отображать дату в форме «/» с числом, месяцем и годом. В то время как «F» покажет дату с помощью «-», а формат будет иметь год, месяц и день соответственно. Чтобы сделать его точным и простым для пользователя, мы использовали строку, которая показывает правильное значение спецификатора формата, т. е. f и d. Оператор «+%» используется для привязки спецификатора формата к дате.

Получить день, месяц и год

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

Как следует из синтаксиса, мы используем дату и указанный формат для получения определенного вывода.

Некоторые спецификаторы следующие:

% d = представляет день месяца

% B = Отображает полное название месяца

% m = отображение месяца в году

% Y = Показать год

% T = Показать время

% H = отображает час во времени

% M = отображение минут во времени

% S = отображает секунды во времени

Месяц года

Чтобы найти месяц в году. Мы используем формат «B», как описано выше в примерах.

Год Чтобы отобразить текущий год, мы используем формат «Y». Если нам нужны только две последние цифры года, используется маленькая буква «y».

День неделиМы будем использовать «A», чтобы получить полное название дня недели. В то время как «а» используется для получения аббревиатуры дня.

Получить даты прошлого и будущего

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

Определенный день назад

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

Последний месяц

Команда last month поможет пользователю получить предыдущий месяц текущего года.

В следующем году

Команда «Следующий год» показывает год после текущего года.

Разница между датами

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

$Echo$((($(дата –d “2021-3-24” “+%s”) - $(дата –d “2021-3-18” “+%s”)) )/86400) )

Отображать дату в формате –d или –date

Команда Date знает, как обрабатывать ввод –d или –date. Он принимает дату ввода в виде строки. Чтобы получить дату на следующий день предстоящей недели, мы вводим приведенный ниже пример.

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

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

Отображать номер недели в текущем году

Как показано в приведенной ниже команде, мы можем получить номер недели текущего года, используя «V».

Номер дня в текущем году

Номер дня до текущей даты отображается с помощью %j%.

Установить дату в соответствии с часовым поясом

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

Это отобразит вывод даты и местного времени для определенного часового пояса. Здесь часовой пояс – Азия/Карачи.

Чтобы изменить данный часовой пояс на другой, вам необходимо знать название часового пояса. Для отображения часового пояса используется формат «Регион/Город». Вот доступные параметры часового пояса:

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

В приведенном выше выводе видно, что часовой пояс обновлен на Европу/Стамбул.

Получить дату и время, установив аппаратные часы

Аппаратные часы работают даже при отсутствии питания. Он работает внутри аппаратного обеспечения системы.

Вывод будет продемонстрирован, как показано на изображении:

Заключение

Теперь мы можем установить дату или изменить ее через командную строку в Linux. Это достаточно легко и понятно. Упомянутые выше запросы подробно обсуждаются для пользователей. Спецификаторы формата помогают установить дату определенного дня.

Об авторе

Акса Ясин

Я целеустремленный профессионал в области информационных технологий и обожаю писать. Я технический писатель и люблю писать для всех разновидностей Linux и Windows.

Читайте также: