Посмотреть время на сервере linux

Обновлено: 07.07.2024

Немно­го тео­рии. В любом ком­пью­те­ре есть два вида часов. Одни аппа­рат­ные (ЧРВ — часы реаль­но­го вре­ме­ни или RTC — real time clock), кото­рые рабо­та­ют даже при выклю­чен­ном бло­ке пита­ния, на это у них есть бата­рей­ка на мате­рин­ской пла­те. Дру­гие про­грамм­ные, то есть часы опе­ра­ци­он­ной систе­мы. Пока­за­ния этих часов могут раз­ли­чать­ся. При этом про­грамм­ные часы опи­ра­ют­ся на пока­за­ния аппа­рат­ных при стар­те опе­ра­ци­он­ной систе­мы. А в даль­ней­шем могут син­хро­ни­зи­ро­вать­ся через интер­нет с эта­лон­ны­ми и кор­рек­ти­ро­вать ход аппаратных.
В боль­шин­стве слу­ча­ев если ком­пью­тер рабо­та­ет под управ­ле­ни­ем опе­ра­ци­он­ной систе­мой Windows пока­за­ния аппа­рат­ных и про­грамм­ных часов сов­па­да­ют. В linux же чаще все­го аппа­рат­ные часы настра­и­ва­ют по грин­ви­чу (вре­ме­ни нуле­во­го мери­ди­а­на), а про­грамм­ные по необ­хо­ди­мо­му сме­ще­нию для часо­во­го поя­са где рас­по­ло­жен сервер.
Абсо­лют­ное боль­шин­ство про­грамм (при­ло­же­ний и сер­ви­сов) в сво­ей рабо­те опи­ра­ют­ся на пока­за­ния систем­ных (про­грамм­ных) часов.

Для чего нужно корректировать часы

  • Что­бы избе­жать вче­раш­них ново­стей и пуб­ли­ка­ций зав­траш­не­го дня. К при­ме­ру часы ваше­го сер­ве­ра идут по вре­ме­ни Хаба­ров­ска, а основ­ные посе­ти­те­ли из Евро­пы (раз­ни­ца UTC +11). В такой ситу­а­ции вечер­ний посе­ти­тель уви­дит «зав­траш­ние» даты на сай­те. Так как когда в Евро­пе вечер, то в Хаба­ров­ске утро сле­ду­ю­ще­го дня.
  • Что­бы было удоб­но настра­и­вать зада­ния Cron.
  • Что­бы вре­мя созда­ния фай­лов сов­па­да­ло с фак­ти­че­ским и не вво­ди­ло Вас в заблуждение.

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

Про­ве­рим, что пока­зы­ва­ют аппа­рат­ные часы, для чего будем исполь­зо­вать три вари­ан­та коман­ды hwclock:

При­ве­ден­ный при­мер для слу­чая когда аппа­рат­ные часы идут по UTC , а сер­вер настро­ен на Мос­ков­ский часо­вой пояс. Осо­бых пояс­не­ний тре­бу­ет опция —utc вывод вре­ме­ни про­из­во­дит­ся (фор­ми­ру­ет­ся) с усло­ви­ем, что аппа­рат­ные часы идут по вре­ме­ни UTC . То есть пока­за­ния долж­ны сов­па­дать с жела­е­мым вре­ме­нем на сер­ве­ре. Опция же —localtime наобо­рот пока­зы­ва­ет вре­мя аппа­рат­ных часов без вся­ких поправок.

Несколько полезных команд установки времени аппаратных часов

Уста­нав­ли­ва­ем вре­мя аппа­рат­ных часов рав­ное системному:

Уста­нав­ли­ва­ем вре­мя систем­ных часов на осно­ва­нии ЧРВ:

Уста­нав­ли­ва­ем вре­мя рав­ное указанному:

Значение временной зоны

Дан­ные вре­мен­ной зоны для аппа­рат­ных часов в Centos хра­нят­ся в фай­ле /etc/sysconfig/clock.
Для мос­ков­ской вре­мен­ной зоны в слу­чае когда аппа­рат­ные часы идут по UTC он име­ет сле­ду­ю­щее содержимое:

Где ZONE — это наш часо­вой пояс, UTC гово­рит о том, что аппа­рат­ные часы сер­ве­ра идут по уни­вер­саль­но­му вре­ме­ни UTC , ARC в зна­че­нии false — зна­чит исполь­зу­ет­ся нор­маль­ное зна­че­ние века (эпо­хи) UNIX .
Подроб­нее по кон­фи­гу­ра­ции фай­ла /etc/sysconfig/clock в CentOS мож­но почи­тать в офи­ци­аль­ной документации.

Системные часы операционной системы CentOS

Для систем­ных (про­грамм­ных) часов CentOS исполь­зу­ет­ся коман­да date.

При­ве­ден­ный при­мер для слу­чая когда опе­ра­ци­он­ная систе­ма исполь­зу­ет Мос­ков­ский часо­вой пояс. Здесь опция —utc гово­рит, что необ­хо­ди­мо пока­зать вре­мя нуле­во­го мери­ди­а­на, то есть без попра­вок на часо­вой пояс.

Изменение временной зоны (часового пояса) в CentOS

Для изме­не­ния вре­ме­ни систем­ных часов, если их пока­за­ния не соот­вет­ству­ют необ­хо­ди­мо­му реги­о­ну, необ­хо­ди­мо про­де­лать сле­ду­ю­щие нехит­рые операции.
В нача­ле, сде­ла­ем резерв­ную копию суще­ству­ю­ще­го фай­ла вре­мен­ной зоны (часо­во­го пояса).

Это хоро­шая прак­ти­ка, когда вы дела­е­те резерв­ные копии ори­ги­наль­ных фай­лов конфигурации ?

Затем, созда­ем ссыл­ку на необ­хо­ди­мую вре­мен­ную зону.

(в нашем слу­чае /usr/share/zoneinfo/Asia/Bishkek)

где Europe/Moscow необ­хо­ди­мая вре­мен­ная зона. Пол­ный спи­сок доступ­ных часо­вых поя­сов смот­рим в ката­ло­ге /usr/share/zoneinfo/.
При необ­хо­ди­мо­сти мож­но уста­но­вить зна­че­ние вре­ме­ни вручную:

где MM – месяц, DD – день, hh – час, mm – минуты.
То есть что­бы задать, к при­ме­ру, 18 мар­та 20 часов 15 минут, нуж­но вве­сти следующее:

Более подроб­но о коман­де date, мож­но почи­тать в мануа­ле, выпол­нив команду:

Настройка сервера времени ntp

Со вре­ме­нем часы могут убе­гать или отста­вать, поэто­му вре­мя от вре­ме­ни их нуж­но син­хро­ни­зи­ро­вать с эта­лон­ны­ми. Для это­го в CentOS исполь­зу­ет­ся демон ntpd.
Уста­но­вим демон ntpd если его нет в системе:

Одно­крат­но син­хро­ни­зи­ру­ем время:

Если полу­чи­ли что-то вро­де the NTP socket is in use, exiting — зна­чит ntpd демон уже запу­щен. В этом слу­чае оста­но­вим его:

Настра­и­ва­ем рабо­ту ЧРВ в BIOS на вре­мя по UTC :

Этой коман­дой мы при­сво­и­ли зна­че­ние вре­ме­ни аппа­рат­ных часов рав­ным систем­но­му вре­ме­ни. Как вы помни­те, систем­ные часы мы син­хро­ни­зи­ро­ва­ли коман­да­ми выше.
Про­ве­рим содер­жи­мое фай­ла /etc/sysconfig/clock что­бы систе­ма после загруз­ки пра­виль­но выстав­ля­ла мест­ное вре­мя. Для Моск­вы он дол­жен содер­жать следующее:

Настра­и­ва­ем демон ntpd на авто­за­груз­ку при стар­те опе­ра­ци­он­ной системы:

Запус­ка­ем демон син­хро­ни­за­ции времени:

Про­ве­ря­ем систем­ное вре­мя командой:

Оно долж­но сов­па­дать с реальным.
Про­ве­рим, син­хро­ни­зи­ру­ет­ся ли систем­ное вре­мя с сер­ве­ра­ми эта­лон­но­го вре­ме­ни (ntp server) и все ли там в поряд­ке коман­дой ntpq -p:

remote refid st t when poll reach delay offset jitter test . danzuck . ch 162 . 23 . 41 . 56 2 u 1 64 1 12 . 280 -23 . 298 0 . 031 fw . ams . nl . alexs 82 . 197 . 221 . 30 4 u 2 64 1 2 . 086 -19 . 002 0 . 000 ntp0 . mediamatic 193 . 0 . 0 . 229 2 u 1 64 1 0 . 998 -19 . 938 0 . 000 elara . mysnip . de . INIT . 16 u - 64 0 0 . 000 0 . 000 0 . 000

Демон ntpd вклю­ча­ет в ядре Linux режим «11 minute mode». В этом режи­ме каж­дые 11 минут син­хро­ни­зи­ру­ют­ся систем­ные и аппа­рат­ные часы. По-умол­ча­нию он (режим «11 minute mode») выклю­чен и вклю­ча­ет­ся толь­ко когда какой-то сер­вис попро­сит вклю­чить этот режим. Демон ntpd как раз его и (режим «11 minute mode») вклю­ча­ет. Так что допол­ни­тель­но син­хро­ни­зи­ро­вать аппа­рат­ные часы по зна­че­нию систем­ных нет необходимости.
P.S. Теперь систем­ные и аппа­рат­ные часы ваше­го сер­ве­ра будут авто­ма­ти­че­ски син­хро­ни­зи­ро­вать­ся с эта­лон­ны­ми сер­ве­ра­ми и все­гда пока­зы­вать точ­ное время.

В появив­шей­ся таб­ли­це мы видим сер­ве­ра с кото­ры­ми син­хро­ни­зи­ро­ван наш ntpd .

remote

Имя уда­лен­но­го NTP-сервера.
refid
Ука­зы­ва­ет, отку­да каж­дый сер­вер полу­ча­ет вре­мя в дан­ный момент.
st
Stratum это чис­ло от 1 до 16, ука­зы­ва­ю­щее на точность
сер­ве­ра. Еди­ни­ца озна­ча­ет мак­си­маль­ную точ­ность, 16 -- сервер
недо­сту­пен. Уро­вень ваше­го сер­ве­ра будет равен уров­ню наи­ме­нее точного
уда­лен­но­го сер­ве­ра плюс 1.
poll
Интер­вал меж­ду опро­са­ми (в секун­дах). Зна­че­ние будет изменяться
меж­ду мини­маль­ной и мак­си­маль­ной часто­той опро­сов. В начале
интер­вал будет неболь­шим, что­бы син­хро­ни­за­ция происходила
быст­ро. После того как часы син­хро­ни­зи­ру­ют­ся, интер­вал начинает
уве­ли­чи­вать­ся, что­бы умень­шить тра­фик и нагруз­ку на популярные
сер­ве­ра времени.

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

delay
Коли­че­ство вре­ме­ни (в секун­дах) необ­хо­ди­мо­го для получения
отве­та на запрос "кото­рый час? ".

offset
Наи­бо­лее важ­ное поле. Раз­ни­ца меж­ду вре­ме­нем локаль­но­го и
уда­лен­но­го сер­ве­ров. В ходе син­хро­ни­за­ции это зна­че­ние должно
пони­жать­ся, ука­зы­вая на то, что часы локаль­ной маши­ны идут все
точнее.

jitter
Дис­пер­сия (Jitter) -- это мера ста­ти­сти­че­ских откло­не­ний от
зна­че­ния сме­ще­ния (поле offset) по несколь­ким успеш­ным парам
запрос-ответ. Мень­шее зна­че­ние дис­пер­сии предпочтительнее,
посколь­ку поз­во­ля­ет точ­нее син­хро­ни­зи­ро­вать время.

Зна­че­ние зна­ков перед име­на­ми серверов

- Озна­ча­ет, что локаль­ный сер­вис NTP не пред­по­чи­та­ет этот сервер
+ Озна­ча­ет, что локаль­ный сер­вис NTP пред­по­чи­та­ет этот сервер
x Отме­ча­ет пло­хой хост
* Ука­зы­ва­ет на теку­щий наи­бо­лее пред­по­чти­тель­ный сервер

Что такое NTP-сервер?

NTP озна­ча­ет сете­вой про­то­кол времени.

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

Он будет сохра­нять оди­на­ко­вое вре­мя (точ­ное вре­мя) для всех систем, кото­рые под­клю­че­ны к NTP-сер­ве­ру через NTP или кли­ент Chrony.

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

Он исполь­зу­ет про­то­кол поль­зо­ва­тель­ских дей­та­грамм ( UDP ) на пор­ту номер 123 для отме­ток вре­ме­ни отправ­ки и получения.

Это кли­ент / сер­вер­ное приложение.

Он отправ­ля­ет и полу­ча­ет вре­мен­ные мет­ки с исполь­зо­ва­ни­ем про­то­ко­ла поль­зо­ва­тель­ских дей­та­грамм ( UDP ) на пор­ту 123.

Что такое NTP-клиент?

NTP-кли­ент син­хро­ни­зи­ру­ет свои часы с сете­вым сер­ве­ром времени.

Что такое Chrony ?

Chrony — это заме­на NTP-клиента.

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

Зачем нам нужен NTP сервер?

Что­бы все сер­ве­ры в вашей орга­ни­за­ции были син­хро­ни­зи­ро­ва­ны с точ­ным вре­ме­нем выпол­не­ния зада­ний, осно­ван­ных на времени.

Что­бы про­яс­нить это, я рас­ска­жу вам сценарий.

Ска­жем, напри­мер, у нас есть два сер­ве­ра (Server1 и Server2).

Server1 обыч­но выпол­ня­ет пакет­ные зада­ния в 10:55, а затем Server2 необ­хо­ди­мо выпол­нить дру­гое зада­ние в 11:00 на осно­ва­нии отче­та о завер­ше­нии зада­ния Server1.

Если обе систе­мы исполь­зу­ют в раз­ное вре­мя (если одна систе­ма опе­ре­жа­ет дру­гие, дру­гие отста­ют от этой кон­крет­ной), мы не смо­жем это сделать.

Для это­го нам нуж­но настро­ить NTP .

Наде­юсь, это убра­ло ваши сомне­ния по пово­ду необ­хо­ди­мо­сти NTP .

В этой ста­тье мы будем исполь­зо­вать сле­ду­ю­щую настрой­ку, что­бы про­ве­рить рабо­ту NTP

СТОРОНА NTP-СЕРВЕРА: Как установить NTP-сервер на Linux?

Не суще­ству­ет раз­ных паке­тов для NTP-сер­ве­ра и NTP-кли­ен­та, так как это модель кли­ент / сервер.

Пакет NTP досту­пен в офи­ци­аль­ном репо­зи­то­рии дис­три­бу­ти­ва, поэто­му исполь­зуй­те его для установки.

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

Какое время бывает в Linux?

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

Немного теории. В любом компьютере есть два вида часов. Одни аппаратные (ЧРВ — часы настоящего времени или RTC — real time clock), которые работают даже при выключенном блоке кормления, на это у них есть батарейка на материнской плате. Другие программные, то есть часы (прибор для определения текущего времени суток и измерения продолжительности временных интервалов в единицах, меньших, чем одни сутки) операционной системы. Сведения этих часов могут различаться. При этом программные часы опираются на показания аппаратных при старте операторной системы. А в дальнейшем могут синхронизироваться через интернет с эталонными и корректировать ход аппаратных.

Внимание: дату и время может изменять только root-пользователь.

В большинстве ситуации если компьютер работает под управлением операционной системой Windows показания аппаратных и программных часов сходят. В linux же чаще всего аппаратные часы настраивают по гринвичу (времени нулевого экватора), а программные по необходимому смещению для часового пояса где расположен сервер. Абсолютное большинство прог (приложений и сервисов) в своей работе опираются на показания системных (программных) часов.

Узнать время на сервере в Linux Ubuntu

Знаете ли вы, что по умолчанию в Linux каждые день примерно в четыре часа ночи запускаются различные служебные задачи?! Например чистка временных каталогов, сжатие лог-файлов и т.п. А теперь представьте, что время на сервере настроено ошибочно и все эти задачи запускаются в час пик посещаемости вашего сайта. Правильно установленные дата и время нужны для корректной работы планировщика задач.

Кроме того, они пишутся во все основные целые лог-файлы и лог-файлы посещений веб-сервера. Никогда не возникало желания узнать время или дату, когда под рукой только Ubuntu, а телефон с часами где-то запропастились? Запустите команду date без характеристик для проверки времени. Как всегда в Ubuntu все элементарно, нужно только набрать команду:

Команда date — как раз для этих целей. Можно почитать ее справку — там много чего интересного.

Как узнать время через консоль Linux?

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

Для этого, чтобы поменять время консоль Linux нужно ввести следующую команду:

где, MM — представляется месяцем, DD — днем, hh — часом, mm — минутой, CCYY — годом (вводим так – хххх), ss — секундами. То имеется в виде МесяцДеньЧасМинута, остальное [MMDDhhmm[[CC]YY][.ss]] по вкусу. Об это хорошо (и главное в самом верху) составлено в мануале man date, однако остальное писалось, по всей видимости, роботами для роботов. Воздействие нужно выполнять из под рута. Для того, чтобы посмотреть полный список команд, какие помогут вам изменить/настроить время через консоль Linux достаточно ввести

Как настроить время на сервере Linux чрез hwclock?

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

Ставим время аппаратных часов равное системному:

Ставим время системных часов на основании ЧРВ:

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

hwclock --set --date "09 Jan 2012 14:11"

Приведенный пример для варианта когда аппаратные часы идут по UTC, а сервер настроен на Московский часовой пояс. Специальных пояснений требует опция —utc вывод времени производится (формируется) с условием, что аппаратные часы идут по времени UTC. То имеется показания должны совпадать с желаемым временем на сервере. Опция же —localtime наоборот демонстрирует время (форма протекания физических и психических процессов, условие возможности изменения) аппаратных часов без всяких поправок.

Настройка сервера времени ntp в Linux

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

Если получили что-то вроде the NTP socket is in use, exiting — значивает ntpd демон уже запущен. В этом случае остановим его:

service stop ntpd

Налаживаем работу ЧРВ в BIOS на время по UTC:

hwclock --systohc --utc

Этой бригадой мы присвоили значение времени аппаратных часов равным системному времени. Как вы помните, целые часы мы синхронизировали командами выше. Проверим содержимое файла /etc/sysconfig/clock дабы система после загрузки правильно выставляла местное время.

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


Чтобы отобразить время в формате UTC (всемирное координированное время), ранее называвшееся GMT (среднее время по Гринвичу), добавьте параметр -u.

3) Отображение определенной даты в строковом формате

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

4) Использование команды date, чтобы проверить прошлые даты

Команда date также может выводить дату и время в прошлом относительно вашей текущей даты.

Например, чтобы проверить дату 9 дней назад, выполните команду.

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

5) Использование команды date, чтобы проверить будущие даты

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

Например, чтобы узнать дату завтрашнего дня:

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

6) Параметры форматирования даты

Команда date имеет множество опций, позволяющих настроить вывод даты. Ниже перечислены некоторые из доступных вариантов форматирования.
  • %D – Отображение даты в формате мм / дд / гг
  • %Y – Год (например, 2021 г.)
  • %m – Месяц (01-12)
  • %B – Название месяца в формате полной строки (например, February)
  • %b –Название месяца в сокращенном строковом формате (например, Feb).
  • %d – День месяца (например, 01)
  • %j – День года (001-366)
  • %u – День недели (1-7)
  • %A –День недели в формате полной строки (например, Friday)
  • %a – День недели в сокращенном формате (например, Fri)
  • %H – Час (00-23)
  • %I – Час (01-12)
  • %M – Mинута (00-59)
  • %S – Секунда (00-60)

Синтаксис использования опции date довольно прост:

Например, чтобы вывести в формате гг / мм / дд, запустите

Чтобы вывести день недели, месяц, год и текущее время:

7) Как установить дату и время

Команда date также позволяет вам установить дату и время.

Например, чтобы установить дату и время на 25 июня 2021 года в 11:15, выполните команду:

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

Фактически, современные системы, такие как CentOS 8/RHEL 8, не поддерживают NTP.

У нас есть подробное руководство о том, как синхронизировать время и дату с помощью chrony.

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

8) Использование команды Date в переменной

Иногда при создании скриптов мы сохраняем команду date в переменной, а затем позже создаем файл лога используя эту переменную, примеры показаны ниже.

Заключение

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

Команда Date в Linux с примерами

Команда date отображает или устанавливает системную дату. Чаще всего он используется для печати даты и времени в разных форматах и ​​для расчета будущих и прошлых дат.


Использование Date

Синтаксис date команды следующий:

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

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


Параметры форматирования даты

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

Символ %Y будет заменен на год, %m месяц и %d день месяца:

Вот еще один пример:

Ниже приведен небольшой список некоторых наиболее распространенных символов форматирования:

  • %a - Сокращенное название дня недели (например, понедельник)
  • %A - Сокращенное полное название дня недели (например, понедельник)
  • %b - Сокращенное название месяца (например, январь).
  • %B - сокращенное длинное название месяца (например, январь)
  • %d - день месяца (например, 01)
  • %H - час (00..23)
  • %I - час (01.12.12)
  • %j - День года (001..366)
  • %m - Месяц (01.12.12)
  • %M - Минута (00..59)
  • %S - Второй (00 .. 60)
  • %u - день недели (1..7)
  • %Y - Полный год (например, 2019)

Чтобы получить полный список всех параметров форматирования, запустите date --help или man date в своем терминале.

Пользовательское форматирование даты

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

Использование пользовательского форматирования:

Строка даты принимает значения, такие как «завтра», «пятница», «последняя пятница», «следующая пятница», «следующий месяц», «следующая неделя» .. и т. Д.

Вы также можете использовать параметр строки даты, чтобы показать местное время для разных часовых поясов. Например, чтобы показать местное время 6:30 утра следующего понедельника на восточном побережье Австралии, введите:


Переопределить часовой пояс

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

Например, чтобы показать время в Мельбурне, введите:

Чтобы получить список всех доступных часовых поясов , вы можете либо перечислить файлы в /usr/share/zoneinfo каталоге, либо использовать timedatectl list-timezones команду.


Конвертер эпох

date Команда может быть использована в качестве преобразователя Epoch. Время, или метки времени Unix, - это количество секунд, прошедших с 1 января 1970 года в 00:00:00 UTC.

Чтобы напечатать количество секунд от эпохи до текущего дня, вызовите date с %s контролем формата:

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


Использование date с другими командами

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

Команда ниже создаст файл резервной копии Mysql в следующем формате database_name-20190601.sql

Вы также можете использовать date команду в своих сценариях оболочки. В приведенном ниже примере мы присваиваем выход date к date_now переменной:


Показать время последнего изменения файла

Команда date с -r параметром показывает время последнего изменения файла. Например:

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


Установите системное время и дату

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

Однако, если вы хотите установить системные часы вручную, вы можете использовать эту --set= опцию. Например, если вы хотите установить дату и время 17:30, 01 июня 2019 г., введите:

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