- Команда date в Linux
- Синтаксис команды date
- Примеры использования date
- Выводы
- Настройка даты и времени в Linux
- Узнать текущее системное время
- Узнать текущее время BIOS
- Исправить текущее время
- Синхронизация с ntp
- Заставить систему синхронизовать время с ntp
- Как узнать текущее время Linux
- Текущее время Linux
- С помощью date
- 2. С помощью hwclock
- 3. С помощью timedatectl
- Выводы
Команда date в Linux
Главное свойство утилит GNU/Linux — делать что-то одно, но эффективно. Яркий пример — команда date Linux, работающая с датой и временем. С её помощью можно извлекать любую дату в разнообразном формате, в том числе и рассчитывать прошлое и будущее время. Привилегированные пользователи могут перезаписывать системное время, используя её.
Утилита предустановлена во всех дистрибутивах GNU/Linux. В этой статье будут рассмотрены возможности date и способы применения этой команды.
Синтаксис команды date
Программа может выполнятся от имени обычного пользователя. Стандартный синтаксис команды (квадратные скобки обозначают необязательное наличие):
date [ ОПЦИИ ] . [ +ФОРМАТ ]
Ниже представлена таблица с часто применяемыми опциями для date.
Опция | Длинный вариант | Значение |
---|---|---|
-d STRING | —date=STRING | Вывод даты по указанной строке (например ‘yesterday’, ‘tomorrow’, ‘last monday’). |
-I | —iso-8601[=FMT] | Вывод даты в формате ISO 8601. FMT по умолчанию содержит ‘date’. Также может содержать ‘hourse’, ‘minutes’, ‘seconds’, ‘ns’ для отображения соответствующих значений и часовой пояс относительно UTC рядом с датой. |
—rfc-3339=FMT | Вывод даты в формате RFC 3339. FMT по умолчанию содержит ‘date’. Также может содержать ‘seconds’ и ‘ns’ для отображения секунд или наносекунд. | |
-r FILE | —reference=FILE | Вывод даты последней модификации указанного файла в формате по умолчанию. |
-u | —utc | Вывод UTC-даты |
Аргумент ФОРМАТ отвечает за форматирование вывода даты. Для его указания необходимо поставить знак «+» и написать нужную маску. Наиболее популярные форматы:
Формат | Значение |
---|---|
%% | Знак процента |
%a | День недели текущей локали в короткой форме («Чтв») |
%A | День недели текущей локали в длинной форме («Четверг») |
%b | Месяц года текущей локали в короткой форме в родительном падеже («янв») |
%B | Месяц года текущей локали в длинной форме в родительном падеже («января») |
%c | Дата и время текущей локали без указания часового пояса |
%С | Первые две цифры текущего года |
%d | Числовой день месяца с ведущим нулём |
%D | Дата в формате %m/%d/%y |
%e | День месяца; аналог %_d |
%F | Дата в формате %Y-%m-%d |
%h | Аналог %b |
%H | Часы (00..23) |
%I | Часы (01..12) |
%j | День года (001..366) |
%m | Месяц (01..12) |
%M | Минуты (00..59) |
%n | Новая строка |
%q | Квартал года |
%S | Секунды (00..59) |
%t | Знак табуляции |
%T | Время в формате %H:%M:%S |
%u | Числовой день недели; 1 — понедельник |
%x | Дата в локальном формате |
%X | Время в локальном формате |
%Z | Аббревиатура временной зоны |
Примеры использования date
Введем команду без параметров.
Будет отображена текущая дата и время в соответствии с настройками локали системы.
Команда date без параметров по умолчанию применяет маску %a %b %d %X %Z. Поскольку все форматы должны быть переданы как один параметр (из-за принципа обработки данных командным интерпретатором Bash), пробелы между ними необходимо экранировать обратным слэшем (\) или взять в кавычки.
Особое внимание следует уделить параметру -d (—date). Его функциональность не слишком очевидна, но при этом наиболее обширна.
Пример 1. Вычисление даты по числу секунд, прошедших с 1 января 1970 года.
Пример 2. Вычисление даты и времени следующего понедельника при указании часового пояса Нью-Йорка в 03:00.
date —date=’TZ=»America/New_York» 03:00 next mon’
Обратите внимание: указывать название дня недели или месяца можно в любом регистре, в короткой или длинной форме. Параметры next и last обозначают следующий и прошедший, соответственно, ближайшие дни недели.
Пример 3. Если текущий день месяца — последний, сформировать отчет о занятости дискового пространства корневого и домашнего каталога в файл report.
#!/bin/bash
if [[ $(date —date=’next day’ +%d) = ’01’ ]]; then
df -h / /home > report
Такой скрипт можно использовать для автоматизации работы с помощью демона crontab или anacron.
Выводы
Команда date Linux является эффективным инструментом работы с датой и временем, с широкой возможностью их расчёта для прошедших или будущих показателей. Также она применяется в написании сценариев в командном интерпретаторе Bash.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Настройка даты и времени в Linux
При работе в сети синхронизация времени и даты это важный фактор увеличивающий стабильность и безопасность работы всех систем.
В этой статье вы узнаете как настраивать дату и время вручную. И, что более важно — как синхронизировать их с ntp сервером.
Узнать текущее системное время
Узнать текущее системное время можно командой date
Узнать текущее время BIOS
Узнать текущее системное время BIOS можно командой hwclock
date и hwclock могут показывать совершенно разное время
Исправить текущее время
Сначала нужно задать время командой date
Также можно вводить «date MMDDhhmmCCYY» без секунд, тогда секунды выставляются на ноль.
После выполнения date нужно внести новое установленное время в BIOS:
Теперь осталось только проверить сохранились ли изменения
Синхронизация с ntp
Проверьте установлен ли ntp командой
Если ntp не установлен выполните
Проверьте запускается ли ntpd автоматически командой
systemctl list-unit-files | grep ntpd.s
Если ntpd неактивен (disabled) выполните
systemctl start ntpd
systemctl enable ntpd
Проверить добавлен ли сервис ntp в зону public в firewall можно командой
sudo firewall-cmd —get-services | grep ntp
Если ещё не добавлен, то чтобы разрешить UDP траффик от ntp выполните
firewall-cmd —permanent —add-service=ntp
firewall-cmd —reload
Отредактируйте файл ntp.conf с настройками сервера
Найдите свою временную зону на сайте www.ntppool.org
Я нашёл зону Helsinki и добавляю строки
server 0.fi.pool.ntp.org server 1.fi.pool.ntp.org server 2.fi.pool.ntp.org server 3.fi.pool.ntp.org
Теперь нужно перезапустить ntpd
Проверить откуда берётся время можно командой
remote refid st t when poll reach delay offset jitter ============================================================================== time.cloudflare 10.79.8.177 3 u 14 64 7 3.987 -0.366 0.016 37.228.129.2 193.66.253.94 2 u 16 64 7 5.301 -1.639 1.908 ivanova.ganneff 237.17.204.95 2 u 13 64 7 5.296 3.850 0.266 ntp23.kashra-se 192.168.100.15 2 u 12 64 5 32.935 -2.213 0.192
Выставить время BIOS по только что полученному времени можно командой
Заставить систему синхронизовать время с ntp
Вместо 0.fi.pool.ntp.org поставьте нужный вам сервер
Как узнать текущее время Linux
Иногда знание текущего времени на компьютере играет большую роль, например, при отслеживании выполнения тех или иных процессов. И далеко не всегда нужную информацию можно посмотреть через системный интерфейс Linux. Поэтому существуют различные команды для терминала.
В данной статье мы расскажем про то, как узнать текущее время Linux. Заодно упомянем тему часовых поясов и синхронизацию с серверами времени.
Текущее время Linux
В системе Linux есть три удобных утилиты для определения точного времени. Наиболее продвинутой из них можно назвать date. Но и остальные имеют свои особенности.
С помощью date
Чтобы получить общую информацию, выполните команду:
Сначала выводится дата (день-число-месяц-год), время в 12-часовом формате с пометками AM (до полудня) и PM (после полудня) и часовой пояс. Информацию можно вывести в мировом UTC-формате:
Форматирование задается после знака +. Первый символ после знака % интерпретируется как один из модификаторов. А остальные символы выводятся как обычный текст. Этим можно пользоваться:
date +’Какой сегодня день? Сегодня %e число %m месяца %Y года’
Еще один пример – вывод даты в кратком виде и времени в 24-часовом формате:
Ну и не совсем стандартный вариант – вывести, какой это по счету день в году, и сам год:
date +’Сегодня %j день %Y года’
данной статьей. В ней детально описан синтаксис, опции, форматирование вывода и конкретные примеры использования. А мы переходим к следующему способу.
2. С помощью hwclock
Вообще утилита hwclock используется для настройки даты и времени в системе Linux. Но еще она подходит для простого вывода этой информации. Запускать ее следует с правами супер-пользователя:
Обратите внимание на формат вывода времени. Он включает в себя еще и миллисекунды. И через дефис указывается часовой пояс. По умолчанию это UTC. Ну а для вывода локального времени нужно добавить к команде опцию —localtime:
3. С помощью timedatectl
Еще один вариант просмотра текущего времени – использование утилиты timedatectl. Достаточно ввести команду в терминале:
Помимо даты и времени, здесь есть следующие интересующие нас поля:
- Time zone – часовой пояс.
- System clock synchronized – синхронизация часов с сервером.
- NTP service – подключение к серверу точного времени.
Выводы
Каждый из упомянутых в статье способов Как узнать текущее время Linux имеет свои особенности. Для утилиты date можно детально настроить форматирование вывода. hwclock подходит для беглого просмотра информации, ведь в основном используется для настройки. А через timedatectl получится узнать еще и статус синхронизации часов.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.