Linux date прошлый месяц

Содержание
  1. Команда date в Linux
  2. Синтаксис команды date
  3. Примеры использования date
  4. Выводы
  5. Команда date в Linux
  6. Использование команды date в Linux
  7. Параметры форматирования даты
  8. Строка даты
  9. Отменить часовой пояс
  10. Конвертер эпохи
  11. Использование date с другими командами
  12. Отображение времени последнего изменения файла
  13. Установите системное время и дату
  14. Выводы
  15. Команда Date в Linux с примерами
  16. Использование команды date в Linux
  17. Параметры форматирования даты
  18. Дата строкой
  19. Переопределить часовой пояс
  20. Конвертер эпох
  21. Использование даты с другими командами
  22. Показать время последнего изменения файла
  23. Установите системное время и дату
  24. Заключение
  25. unixforum.org
  26. Поиск файлов за предыдущий месяц
  27. Поиск файлов за предыдущий месяц
  28. Re: Поиск файлов за предыдущий месяц
  29. Re: Поиск файлов за предыдущий месяц
  30. Re: Поиск файлов за предыдущий месяц
  31. Re: Поиск файлов за предыдущий месяц
  32. Re: Поиск файлов за предыдущий месяц
  33. Re: Поиск файлов за предыдущий месяц
  34. Re: Поиск файлов за предыдущий месяц
  35. Re: Поиск файлов за предыдущий месяц
  36. Re: Поиск файлов за предыдущий месяц
  37. Re: Поиск файлов за предыдущий месяц
  38. Re: Поиск файлов за предыдущий месяц
  39. Re: Поиск файлов за предыдущий месяц
  40. Re: Поиск файлов за предыдущий месяц
  41. Re: Поиск файлов за предыдущий месяц
  42. Re: Поиск файлов за предыдущий месяц
  43. Re: Поиск файлов за предыдущий месяц
  44. Re: Поиск файлов за предыдущий месяц

Команда 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.

Источник

Команда date в Linux

В этом руководстве мы рассмотрим основы команды date .

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

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

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

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

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

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

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

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

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

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

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

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

Строка даты

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

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

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

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

Отменить часовой пояс

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

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

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

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

Команду date можно использовать как конвертер эпохи. Эпоха или временные метки 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 1 июня 2019 г., введите:

Выводы

Команда Linux date отображает или устанавливает системные дату и время.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Источник

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

В этой статье мы рассмотрим основы команды date в Linux.

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

Синтаксис команды 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 позволяет работать на конкретную дату. Вы можете указать дату в виде удобочитаемой строки даты, как показано ниже:

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

Строка даты также может принимать значения, такие как “tomorrow”, “friday”, “last friday” “next friday”, “next month”, “next week”… и т. д.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Однако, если вы хотите установить системные часы вручную, вы можете использовать опцию –set=. Например, если вы хотите установить дату и время 12:54, 02 июня 2019 г., введите:

Заключение

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

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

unixforum.org

Форум для пользователей UNIX-подобных систем

  • Темы без ответов
  • Активные темы
  • Поиск
  • Статус форума

Поиск файлов за предыдущий месяц

Модератор: /dev/random

Поиск файлов за предыдущий месяц

Сообщение fireboltgp » 04.11.2013 09:58

Низкий поклон всем, проявившим интерес!

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

Re: Поиск файлов за предыдущий месяц

Сообщение SLEDopit » 04.11.2013 10:03

Re: Поиск файлов за предыдущий месяц

Сообщение Bizdelnick » 04.11.2013 12:05

в консол и
вку́пе (с чем-либо)
в общем
в ообще
в течени е (часа)
нович ок
нюанс
п о умолчанию
приемл емо
пробле ма
проб овать
тра фик

Re: Поиск файлов за предыдущий месяц

Сообщение fireboltgp » 04.11.2013 12:24

Re: Поиск файлов за предыдущий месяц

Сообщение SLEDopit » 04.11.2013 12:34

Странно. Оно должно работать и с остальными месяцами. Кроме января, да. В январе 0 получится вместо 12. Косяк в алгоритме всё же есть.

Re: Поиск файлов за предыдущий месяц

Сообщение fireboltgp » 04.11.2013 12:41

Большое спасибо! Въехал в эту арифметику.

Re: Поиск файлов за предыдущий месяц

Сообщение nerve » 04.11.2013 13:49

Re: Поиск файлов за предыдущий месяц

Сообщение SLEDopit » 04.11.2013 13:57

Re: Поиск файлов за предыдущий месяц

Сообщение nerve » 04.11.2013 16:39

Re: Поиск файлов за предыдущий месяц

Сообщение SLEDopit » 04.11.2013 18:20

Re: Поиск файлов за предыдущий месяц

Сообщение drBatty » 09.11.2013 11:38

ИМХО всё правильно работает.

ИМХО нужно считать разность дат в секундах, и сравнивать с 2629800 (это примерно число сек. в мес. Можно поточнее нагуглить)

Скоро придёт
Осень

Re: Поиск файлов за предыдущий месяц

Сообщение SLEDopit » 09.11.2013 11:41

Re: Поиск файлов за предыдущий месяц

Сообщение drBatty » 09.11.2013 11:55

SLEDopit
если я правильно понял ТЗ ТСа, то программа, запущенная в конце месяца должна забекапить все файлы с 1го числа этого месяца. Но если уж совсем не с первого, а с момента запуска последнего бекапа. Т.е. тут find -newer last_backup нужен.

А ТС себе всё только усложняет.

и что? Если месяц назад был январь? Да, февраль — аномально короткий месяц.

Ну а вообще — ТС должен сам решить, шашечки ему, или ехать. И если шашечки — пусть думает, какие именно.

Скоро придёт
Осень

Re: Поиск файлов за предыдущий месяц

Сообщение fireboltgp » 09.11.2013 13:22

Мне было нужно, чтобы когда бы я ни запустил башник, он залил мне в архив все файлы с прошлого месяца. Ну а запускаю я его кроном первого числа каждого месяца. А если принять во внимание еще и то, что файл, созданый 31-ого числа, может закрыться даже 1-ого числа след. месяца, способ, который я выбрал, таки самый оптимальный. Я архивирую логи переписок в джаббере.

Re: Поиск файлов за предыдущий месяц

Сообщение drBatty » 09.11.2013 13:33

а какая разница, когда _закроется_ файл? У меня бекап делается для _изменённых_ файлов. Т.е. в бекап за сентябрь попадает файл jabber.log, и в бекап за октябрь попадает «этот же» файл. На самом деле, это другой файл, а именно — новая версия.

У вас видимо ДВА бекапа:

1. сам джаббер делает бекапы лога.

2. вы ещё хотите делать бекап бекапа.

Я угадал? В таком случае не делайте бекап последнего открытого текущего файла. И делайте бекапы всех файлов от прошлого бекапа до предпоследнего. Если запускать раз в месяц эту программу, получится именно то, что вы хотите.

Скоро придёт
Осень

Re: Поиск файлов за предыдущий месяц

Сообщение fireboltgp » 09.11.2013 13:43

Что я хотел я уже получил. Да, я там неверно выразился. Я сжимаю все логи за прошлый календарный месяц. Логи — это не бэкапы. Это html-файлы, содержащие журнал переписки между двумя пользователями за конкретные сутки. Их огромная куча за месяц создается. Я получаю переменную с номером предыдущего месяца и ищу файлы, содержание в своем имени эту переменную. Это и просто, и работает 100% четко и метко. А вообще, я ничего не ищу даже, просто указываю tar’у маску имен файлов.

Re: Поиск файлов за предыдущий месяц

Сообщение drBatty » 09.11.2013 14:01

проще, быстрее и надёжнее было-бы сделать

Скоро придёт
Осень

Re: Поиск файлов за предыдущий месяц

Сообщение fireboltgp » 09.11.2013 15:30

Это спор? Мы спорим что ли? Брать дату в секундах — это уже не проще. Для меня, по крайней мере. Мне сперва надо научиться этим пользоваться. А сейчас я представляю, что я сперва должен как-то рассчитать дату в секундах для одного месяца, потом это делать надо же как-то для каждого месяца, при этом в месяцах разное количество секунд. Все это учесть. Для меня это сложно. Я решил свою проблему просто, просто для меня.

А то, что вы утверждаете, что лог — это то же самое, что и бэкап, ставит под сомнение и сам ваш метод и его работоспособность. Бэкап джаббера — это выгрузка его базы данных, копирование его конфигурации и сжатие этого всего в архив. Из логов я потом программу не восстановлю. Я восстановлю ее из файла конфигурации и файла базы данных.

Источник

Читайте также:  Mac os режим восстановления при запуске
Оцените статью