Программы
Настроим время в Linux, FreeBSD и прочих Unix

Настроим время в Linux, FreeBSD и прочих Unix

Как я уже говорил, тема времени — очень скользкая. Здесь нас поджидают сотни договорённостей, которые были приняты до нас. Однако, нам с этим жить. И, возможно, жить с этим под Linux и прочими Unix.

Как я уже говорил, тема времени — очень скользкая. Здесь нас поджидают сотни договорённостей, которые были приняты до нас. Однако, нам с этим жить. И, возможно, жить с этим под Linux и прочими Unix.

Установить и узнать время в Linux/Unix

Для начала установим дату:

$ sudo date +%Y%m%d -s "20170605"

И время:

$ sudo date +%T -s "22:38:00"

Но вот ведь не задача: мы же не указали, в какой временной зоне наше время… Linux выберет ту, которая установлена в системе (об этом ниже). Но если временная зона неизвестна — что делать?

Мы можем воспользоваться менее человеко-читаемым вариантом ввода времени. Однако, он удобнее в плане того, что не зависит от временных зон — Unix Time!

Unix Time — это ещё одна договорённость. Это просто количество секунд, которые прошли с 1-го января 1970-го года по Гринвичу. Вне зависимости от вашего часового пояса, количество секунд с того момента прошло одинаково.

$ sudo date +%s -s @1496679078

Посмотреть время можно с помощью той же утилиты date:

$ date
Пн июн  5 22:38:37 +05 2017

Или в unixtime:

$ date +%s
1496679078

Часы BIOS (аппаратные часы)

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

Итак, давайте посмотрим, который час «по-аппаратному»:

$ sudo hwclock --show
[sudo] пароль для gosha: 
Пн 05 июн 2017 22:37:58  .748508 seconds

и, если нас не устраивает, установим своё время:

$ sudo hwclock --set --date="2017-06-05 22:38:00" --localtime

Также можно ставить время в utc (вместо localtime) для любителей.

Теперь и после перезагрузки время будет идти «правильно».

Временные зоны

Ах, подождите! Но ведь мы установили время опять же в «человеческом» формате! А вдруг, у нас был не тот часовой пояс!? Давайте уже решим эту проблему и настроим временную зону в системе!

Установить временную зону можно опять же из консоли. Для этого сходим в папку /usr/share/zoneinfo/ и смотрим, что там есть. К примеру, я знаю, что моя временная зона — Екатеринбург, а он находится в Азии.

$ ls /usr/share/zoneinfo/
Africa      Egypt      Hongkong           Mexico      ROC
America     Eire       HST                MST         ROK
Antarctica  EST        Iceland            MST7MDT     Singapore
Arctic      EST5EDT    Indian             Navajo      SystemV
Asia        Etc        Iran               NZ          Turkey
Atlantic    Europe     iso3166.tab        NZ-CHAT     UCT
Australia   Factory    Israel             Pacific     Universal
Brazil      GB         Jamaica            Poland      US
Canada      GB-Eire    Japan              Portugal    UTC
CET         GMT        Kwajalein          posix       WET
Chile       GMT0       leap-seconds.list  posixrules  W-SU
CST6CDT     GMT-0      Libya              PRC         zone1970.tab
Cuba        GMT+0      localtime          PST8PDT     zone.tab
EET         Greenwich  MET                right       Zulu

К слову, внутри бинарная информация, но заглянуть внутрь мы всё же можем с помощью утилиты file:

$ file /usr/share/zoneinfo/Asia/Yekaterinburg 
/usr/share/zoneinfo/Asia/Yekaterinburg: timezone data, version 2, 12 gmt time flags, 12 std time flags, no leap seconds, 67 transition times, 12 abbreviation chars

Собственно, меня всё устраивает — устанавливаем временную зону:

$ sudo cp /usr/share/zoneinfo/Asia/Yekaterinburg  /etc/localtime

Установив временную зону, мы можем уже настроить автоматическое обновление настроек времени с помощью протокола NTP — Network Time Protocol — протокол сетевого времени.

Обновить время можно, например командой ntpdate. Не всегда она есть в системе, поэтому ставим (вариант для Ubuntu/Debian/Linux Mint):

sudo apt install ntpdate

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

$ sudo ntpdate 0.ru.pool.ntp.org
 5 Jun 22:54:33 ntpdate[31964]: adjust time server 195.208.218.66 offset 0.005950 sec

где 0.ru.pool.ntp.org — один из русских серверов ntp.

ntpdate сходила на удалённый сервер по протоколу ntp и установила полученное с сервера время нам в систему.

Также можно указать сервера в файле /etc/ntp.conf, чтобы ntpd автоматически обновлял время из сети:

server 0.ru.pool.ntp.org iburst
server 1.ru.pool.ntp.org iburst
server 2.ru.pool.ntp.org iburst
server 3.ru.pool.ntp.org iburst

Однако, чтобы использовать именно ntpd для настройки времени, его надо будет поставить(вариант для Ubuntu/Debian/Linux Mint):

sudo apt install ntp

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

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

Цените время!

Также может быть вам интересно:

Боевой Программист Сирасэ

Разнообразим нашу копилку медиа про программистов. На этот раз — аниме «Battle Programmer Shirase». Аниме довольно специфичное: авторы решили скрестить АйТи и этти. Впрочем, опыт показывает, что многие IT-шники не против…

Читать »

Как в MacOS создать текстовый документ

Иной раз интересно узнать, что интересно другим. Звучит как ерунда, но часто сложно понять, чем живут другие люди. Все мы имеем разные знания, но я не ожидал такого. Я набрал в поисковой строке «как в mac os»…

Читать »
Фото Как настроить отправку почты из Django

Как настроить отправку почты из Django

Письма об ошибках, отчёты на почту, восстановление паролей - всё это полезно при работе с сайтом. Django предоставляет удобный способ это сделать с минимумом настроек!

Фото Добавляем поддержку медиа-файлов в Django проект

Добавляем поддержку медиа-файлов в Django проект

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

Фото Настройка журналирования (логирования) в Python с примерами

Настройка журналирования (логирования) в Python с примерами

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

Фото Так ли безопасен Linux? Несколько коммитов с уязвимосятми в stable

Так ли безопасен Linux? Несколько коммитов с уязвимосятми в stable

Исследователи сумели пройти code-review с реквестами в ядро Linux, заведомо содержащими добавление уязвимостей.

Фото Пользователи и авторизация (логин) в Django, кастомизация пользователя

Пользователи и авторизация (логин) в Django, кастомизация пользователя

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

Фото Панель администрирования Django - настройка вида (шаблона)

Панель администрирования Django - настройка вида (шаблона)

Простой способ подключить админку к сайту на Django, как сконфигурировать адмиин-панель, как изменить оформление администрационной панели Django фреймворка.

Фото Панель администрирования Django - подключение, настройка, поиск, фильтрация

Панель администрирования Django - подключение, настройка, поиск, фильтрация

Простой способ подключить админку к сайту на Django, как сконфигурировать адмиин-панель и добавить функциональность поиска, массовых действий, как изменить оформление администраторской панели Django фреймворка.

Фото И снова sudo, и снова "решето"

И снова sudo, и снова "решето"

В утилите sudo была исправлена очередная уязвимость.