Команда date в Linux

Опубликовано admin - вс, 11/06/2022 - 15:10

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

Примеры использования команды date в Linux

Содержание

Синтаксис

date [ПАРАМЕТР]… [+ФОРМАТ]

Опции

-d,  --date=СТРОКА
Показать не текущее время, а время, описанное заданной СТРОКОЙ
    --debug
Описывать разбираемую дату и предупреждать о сомнительном использовании в stderr
-f,  --file=ФАЙЛ
Как --date для каждой строки из ФАЙЛА
-I[ФОРМ_ВРЕМЕНИ], --iso-8601[=ФОРМ_ВРЕМЕНИ]
Вывод даты/времени в формате ISO 8601. Только дату, если ФОРМ_ВРЕМЕНИ="date"» (по умолчанию), "hours", "minutes", "seconds" или "ns" для получения даты и времени с нужной точностью. Пример: 2006-08-14T02:34:56-06:00
--resolution
Вывести доступное разрешение временных меток Пример: 0.000000001
-R,  --rfc-email
Выводить дату и время в соответствии с RFC-2822. Пример: Mon, 14 Aug 2006 02:34:56 -0600
     --rfc-3339=СПЕЦ
Вывести дату/время в формате RFC 3339 СПЕЦ="date", "seconds" или "ns" для получения даты и времени с указанной точностью. Пример: 2006-08-14 02:34:56-06:00
-r,  --reference=ФАЙЛ
Показать время последнего изменения ФАЙЛА
-s,  --set=СТРОКА
Установить время, описанное СТРОКОЙ
-u, --utc, --universal
Показать или установить универсальное координированное время (UTC)

Параметры формата

Воспринимаются следующие последовательности:

%%
Знак %
%a
Сокращённое название дня недели (напр., вск) согласно локали
%A
Полное название дня недели (напр., понедельник) согласно локали
%b
Сокращённое название месяца (напр., янв) согласно локали
%B
Полное название месяца (напр., январь) согласно локали
%c
Время и дата (напр., Чтв 3 Мар 23:05:25 2005) согласно локали
%C
Век; как %Y, но не указываются две последние цифры (напр., 20)
%d
День месяца (напр., 01)
%D
Дата; аналогично %m/%d/%y
%e
День месяца, дополненный пробелами; аналогично %_d
%F
Полная дата; эквивалентно %+4Y-%m-%d
%g
Последние две цифры года для номера недели ISO (см. %G)
%G
Год для номера недели ISO (см. %V); обычно бывает полезно только с %V
%h
То же, что и %b
%H
Час (00..23)
%I
Час (01..12)
%j
Номер дня в году (001..366)
%k
Час, дополняется пробелом ( 0..23); то же, что и %_H
%l
Час, дополняется пробелом ( 1..12); то же, что и %_I
%m
Месяц (01..12)
%M
Минуты (00..59)
%n
Новая строка
%N
Наносекунды (000000000..999999999)
%p
Эквивалент AM или PM согласно локали; пусто, если неизвестно
%P
Как %p, но строчными буквами
%q
Квартал года (1..4)
%r
Время согласно локали, 12-часовой формат (напр., 11:11:04 PM)
%R
Часы и минуты согласно локали, 24-часовой формат; аналог %H:%M
%s
Число секунд с начала эпохи (1970-01-01 00:00:00 UTC)
%S
Секунда (00..60)
%t
Табуляция
%T
Время, аналог %H:%M:%S
%u
День недели (1..7); 1 обозначает понедельник
%U
Номер недели в году, если первый день недели -- воскресенье (00..53)
%V
Номер недели по ISO, если первый день недели -- понедельник (01..52)
%w
День недели (0..6), 0 означает воскресенье
%W
Номер недели в году, если первый день недели -- понедельник (00..53)
%x
Представление даты (напр., дд/мм/гг) согласно локали
%X
Представление времени (напр.,  23:13:48) согласно локали
%y
Последние две цифры года (00..99)
%Y
Год
%z
+ччмм часового пояса (напр., -0400)
%:z
+чч:мм часового пояса (напр., -04:00)
%::z
+чч:мм:сс часового пояса (напр., -04:00:00)
%:::z
Часовой пояс с достаточным количеством двоеточий (напр., -04, +05:30)
%Z
Буквенная аббревиатура часового пояса (напр., EDT)

По умолчанию команда date дополняет числовые поля нулями. После % могут идти следующие необязательные флаги:

-
(дефис) не дополнять это поле
_
(подчёркивание) дополнять пробелами
0
(нуль) дополнять нулями
+
дополнять нулями и помещать «+» перед будущими годами >4 цифр
^
использовать верхний регистр, если возможно
#
использовать противоположный регистр, если возможно

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

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

Использование команды date в Linux

Текущее системное время и дата

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

oleg@mobile:~:$ date
Вс 06 ноя 2022 13:38:12 EET
oleg@mobile:~:$ 

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

Заданное время и дата

В данном случае используется опция -d:

oleg@mobile:~:$ date -d "2001-12-31 23:59:59"09:10:15"
Пн 31 дек 2001 23:59:59 EET
oleg@mobile:~:$ 

Эта команда конечно же не влияет на фактические значения даты и времени в системе и выводит лишь запрошенную дату и время.

Установка или изменение даты

Вы можете изменить системные часы вручную. Например, чтобы установить дату и время на 07:30 11 мая 1999 г., введите:

oleg@mobile:~:$ date --set="19991011 07:30" 

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

Вывод прошлых дат

Для отображения прошлых дат в Linux используйте опцию --date со следующими значениями: "tomorrow", "Friday", "last Friday", "next Friday", "next week" и подобными.

Примеры:

oleg@mobile:~:$ date --date="2 weeks ago"
Вс 23 окт 2022 15:20:05 EEST
oleg@mobile:~:$ 
oleg@mobile:~:$ date --date="yesterday"
Сб 05 ноя 2022 14:21:45 EET
oleg@mobile:~:$ 
oleg@mobile:~:$ date --date="3 hours ago"
Вс 06 ноя 2022 11:22:33 EET
oleg@mobile:~:$ 

Вывод будущих дат

Примеры:

oleg@mobile:~:$  date --date="3 day"
Ср 09 ноя 2022 14:27:08 EET
oleg@mobile:~:$ 
oleg@mobile:~:$  date --date="tomorrow"
Пн 07 ноя 2022 14:25:57 EET
oleg@mobile:~:$ 

Переопределение часового пояса

По умолчанию команда date использует часовой пояс, определенный в /etc/localtime. Для использования другого часового пояса установите переменную TZ в желаемый часовой пояс.

Можно, например, установить в системе нью-йоркское время:

oleg@mobile:~:$ TZ='America/New_York' date

Увидеть все доступные часовые пояса позволит следующая команда:

oleg@mobile:~:$ timedatectl list-timezones list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Asmera
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau
Africa/Blantyre
Africa/Brazzaville
Africa/Bujumbura
Africa/Cairo
Africa/Casablanca
Africa/Ceuta
Africa/Conakry
Africa/Dakar
Africa/Dar_es_Salaam
Africa/Djibouti
Africa/Douala
Africa/El_Aaiun
Africa/Freetown
Africa/Gaborone
Africa/Harare
Africa/Johannesburg
Africa/Juba
Africa/Kampala
Africa/Khartoum
Africa/Kigali
Africa/Kinshasa
Africa/Lagos
Africa/Libreville
Africa/Lome
Africa/Luanda
Africa/Lubumbashi
Africa/Lusaka
Africa/Malabo
lines 1-38

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

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

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

Содержимое моего файла linuxcookbookru_dump.sh:

oleg@mobile:~/www/backuplinode:$ cat linuxcookbookru_dump.sh 
#!/bin/bash

date=%%
cd /home/mensh/www/backup && \
mysqldump --opt -umensh -pPASSWORD \
linuxcookbookru > linuxcookbookru_linode_`date '+%Y%m%d'`.sql && \
tar cjvf linuxcookbookru_linode_`date '+%Y%m%d'`.sql.bz2 linuxcookbookru_linode_`date '+%Y%m%d'`.sql && \
rm linuxcookbookru_linode_`date '+%Y%m%d'`.sql

Выводы

В этой статье я изложил основные приёмы использования в Linux команды date. Теперь вы наверняка понимаете насколько полезна эта команда.

Поделиться с друзьями