Просмотр или установка даты и времени (POSIX)
date [-tuv] [-s seconds] [+format]
date [-uv] [-S seconds] date
0
).ЗОСРВ «Нейтрино»
aarch64, arm, armv7, e2k, mips, ppc, x86
Утилита date используется для просмотра и установки текущей системной даты и времени в программном обеспечении. Установку времени с использованием утилиты date может выполнять только суперпользователь (root).
Отображение даты
Обычно утилита date отображает текущую дату и время согласно внутреннему времени операционной системы, которое отсчитывается в программном обеспечении как количество секунд, прошедших с начала эры Unix (00:00, 1 января 1970 г.). Если указана опция -s секунды, то вместо текущего времени ОС утилитой date используется значение аргумента seconds.
Формат и содержание отображаемой даты и времени можно установить с помощью аргумента +format. Значение format состоит из ASCII-символов и спецификаторов полей, начинающихся с символа %
, аналогично спецификатору формата printf() в языке C (однако типы полей в данном случае обозначаются абсолютно другими символами). При выводе каждое описание поля заменяется на соответствующее значение; остальные символы копируются в выходные данные без изменений.
Этой утилитой используется функция strftime() библиотеки libc, которая преобразует значение времени в строку. Полный список спецификаторов полей, доступных для использования в аргументе +format, см. в разделе strftime() в руководстве по библиотекам. |
Выходная строка утилиты date всегда завершается символом новой строки.
Установка даты
С помощью утилиты date системный администратор с учетной записью root
может устанавливать системное время. Для синхронизации аппаратных часов с текущим системным временем, установленным с помощью утилиты date, можно использовать утилиту rtc.
При установке даты в период перехода часового пояса с летнего времени на поясное время следует соблюдать осторожность. При изменении времени в часовом поясе на поясное местное время уменьшается на один час (например, вместо 2:00 ночи устанавливается 1:00 ночи). В течение этого часа местное время оказывается неопределенным (например, момент 1:14 ночи в процессе перехода часового пояса на летнее время возникает в течение ночи дважды). Во избежание проблем при установке даты в этот период следует использовать время UTC. |
По умолчанию, если новое время находится в диапазоне (-2,5 минут + старое время, 5 минут + старое время), то утилита date выполняет "плавную корректировку", т.е. повышение скорости отсчета времени на менее 100% или ее снижение менее чем на 50% на период от 1 секунды до 5 минут, до приведения часов в соответствие с новым временем. Эта плавная корректировка не вызывает существенных колебаний в отсчете времени. Плавную корректировку можно деактивировать с помощью опции -S 0
.
Утилита date поддерживает три формата установки времени:
где:
01
, февраль – 02
и т.д.) 1
, 2
, ... 12
) или стандартное английское сокращение названия месяца (jan
, feb
, ... dec
) Формат 1 совместим с утилитой touch. Каждое поле содержит две цифры, поэтому перед одноразрядными числами следует добавлять 0. Этот формат оптимален для корректировки времени дня, так как он имеет минимальную форму ччмм (часы и минуты).
Формат 2 соответствует соглашениям по формату дат в System V UNIX. Он аналогичен формату 1 с указанием месяца и дня, но в данном случае год можно указывать в конце параметра вместо начала. Если в дате присутствует точка (.), то такая дата рассматривается утилитой date как указанная в формате 1 (не в формате 2). Кроме того, форматы ММДДччммГГ (формат 2) и ГГММДДччмм (формат 1) различаются утилитой date по значению первой пары цифр. Годы 00-12 относятся ко времени до начала эры Unix. Поэтому в случае, если первая пара цифр находится в этом диапазоне, дата считается указанной в формате 1.
Формат 3 соответствует соглашениям по формату дат в QNX4 и более ранних. Использование этого формата предполагается при наличии более одного операнда (дата в остальных двух форматах имеет форму непрерывной строки цифр), или если указано только одно число из двух или менее цифр.
При изменении даты и времени утилита date добавляет строку в файл /var/log/wtmp
если он существует.
Если файл var/log/wtmp не существует, то утилита date его не создает. Размер этого файла может быстро увеличиться, что негативно влияет на встраиваемую систему ввиду ограниченности ее ресурсов. |
Просмотр даты и времени в отдельных строках:
$ date "+DATE: %m/%d/%y%nTIME: %H:%M:%S" DATE: 01/20/99 TIME: 08:51:59
Просмотр времени в 12-часовом формате:
$ date "+TIME: %r" TIME: 01:36:32 PM
Установка системной даты 22 февраля 1997 г.:
date 22 2 97
Установка системной даты и времени 16 мая 1997 г., 4:30 после полудня:
date 16 may 1997 4 30 pm
Перевод системного времени на 4:34 после полудня, дата текущая:
date 1634
Следующая команда содержит пример использования опции date -s; по этой команде выводится дата последней записи в файле /usr/adm/syslog
(первый столбец каждой записи в этом файле содержит время в секундах с начала эры Unix):
$ date -s `tail -n1 /usr/adm/syslog | cut -f1 -d ' '` Wed Apr 15 14:25:49 EDT 1997
Для получения дополнительной информации см. разделы cut, logger и tail.
TZ
зависит преобразование между временем системных часов (UTC) и местным временем.
Формат некоторых из спецификаторов полей не определен при использовании настроек, отличных от настройки локализации в POSIX. Как следствие, синтаксический анализ вывода утилиты date в другой настройке локализации может быть затруднен. В ЗОСРВ «Нейтрино» в настоящее время поддерживается только настройка локализации POSIX (т.е. C). |
Базовые подсистемы ЗОСРВ «Нейтрино», POSIX
Предыдущий раздел: Утилиты