- Настройка даты и времени в Linux – команда date
- Синтаксис и основные опции
- Форматы ввода/вывода даты и времени
- Заключение
- Как узнать в Linux время на сервере?
- Какое время бывает в Linux?
- Узнать время на сервере в Linux Ubuntu
- Как узнать время через консоль Linux?
- Как настроить время на сервере Linux чрез hwclock?
- Настройка сервера времени ntp в Linux
- Команда date в Linux
- Синтаксис команды date
- Примеры использования date
- Выводы
Настройка даты и времени в Linux – команда date
Как это часто бывает, всё самое важное скрывается за самыми простыми вещами. Так и в случае с установкой/настройкой даты и времени в системе. Некорректные значения этих параметров запросто ломают логику работы многих приложений, особенно это касается тех систем, где на этом построены целые сервисы, такие как интернет-магазины, SCADA-системы на производстве и т. д. Поэтому так важно следить за корректными настройками времени, даты, языковых форматов, а также уметь все эти параметры настраивать. В системах Linux всё это позволяет выполнять команда date.
Синтаксис и основные опции
Согласно официальной информации, доступной из справочного руководства (команда man date), синтаксис команды date следующий:
Если дать команду date без аргументов или если аргументы начинаются с символа «+», то по-умолчанию будет выведено текущие значения даты и времени. В ином случае производится установка даты и времени, передаваемые в аргументах в каком-либо из форматов. Например, для установки времени введите команду
MM — Месяц
DD — День,
hh — часы в 24-часовом формате,
mm — минуты,
YYYY — 4 цифры года,
ss — секунды.
Прежде чем установить время проверьте правильность установки временной зоны.
Ниже мы боле подробно рассмотрим параметры ввода даты и времени.
Следующая команда выводит информацию о текущих дате и времени в форматированном виде:
Как видно, символ «+» позволяет печатать установленные (текущие) значения, а следующее за ним выражение задаёт формат вывода этих значений. Шаблон подстановки «%n» здесь служит для переноса строки. Все остальные шаблоны подстановки используются для выборки соответствующих компонент времени: месяцы, дни, часы, минуты и т. д. Само же выражение должно заключаться в кавычках, если в нём присутствуют пробельные символы.
Параметры CC, YY и .ss в синтаксисе date означают две последние цифры года, век и секунды (от 0 до 59) соответственно. И эти параметры не являются обязательными. Для того, чтобы устанавливать дату и время с помощью команды date, необходимы права суперпользователя.
В следующей таблице приводится описание основных опций команды date:
Опция | Значение |
-d, —date=STRING | Вычисляет день недели для заданной даты в качестве STRING. Дата задаётся в формате ггммдд. |
-f, —file=DATEFILE | То же самое, что и -d, но для исходных данных используется содержимое из файла FILE. |
-r, —reference=FILE | Определяет время последней модификации файла FILE. |
-s, —set=STRING | Устанавливает время/дату, заданные строкой STRING. |
-u, —utc, —universal | Использование формата |
Форматы ввода/вывода даты и времени
Для формата ввода даты/времени предусматриваются специальные элементы записи того или иного компонента даты/времени. В следующей таблице приводится описание этих элементов записи в виде пар букв, которым соответствуют составляющие даты и времени:
Элемент | Описание |
mm | Минуты — от 0 до 59. |
hh | Часы — от 0 до 23. |
DD | Дни — от 0 до 28, 29, 30 и 31. |
MM | Месяцы — от 01 до 12. |
Как уже можно было видеть, возвращаемые командой данные из её вывода можно форматировать произвольным способом, используя для этого специальные шаблоны подстановки или параметры форматирования. Они служат, как уже было отмечено выше, для выборки требуемых компонентов данных даты/времени из вывода команды date. Список этих параметров довольно длинный, но при этом его легко запомнить, поскольку наименования параметров довольно логичны. Следующая таблица отражает самые основные и часто используемые параметры форматирования:
Узнать время последнего изменения какого-либо файла:
Узнать день недели по его дате:
Вообще, команду date очень активно используют программисты для написания программного кода приложений, работающих с датой/временем, а также при написании скриптов для автоматизации некоторых процессов. Например, для автоматического наименования фалов, в имени которых содержится подстрока с датой его создания:
В результате будет создана копия файла settings.php под именем settings.php_back-070319. В данном случае используется директива $( ) для задания имени файла. Нужно заметить, что данный приём — очень мощный инструмент при работе в командной оболочке Linux.
Заключение
В заключение следует отметить отличную гибкость и большие возможности простой консольной утилиты, доступной по команде date, которая на первый взгляд не представляется заслуживающей внимания. Однако, команда date – это яркий пример «маленькой, но очень эффективной программы» в UNIX-подобных системах.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Как узнать в Linux время на сервере?
В системе Linux весьма важно иметь правильное время и дату, поскольку от этого зависит многое. К тому же неважно, используете ли вы систему Linux на своем персональном компьютере или у вас Linux-сервер. В UNIX время обладает огромное значение: демоны вылязят для свершения тёмных злодеяний по crontab, в логах укрепляется время сообщений, а файловые системы хранят информацию о том, когда файл в последний раз обновлялся. Существует 2 способа для установки даты и времени в Linux:
- Вы можете ставить время в ручную, но надобно быть осторожными, т.к. большинство таймеров склонны убегать или отставать. Есть правда маленькой трюк — поставить в загрузочный скрипт команду hwclock с параметрами о которых будет сказанно ниже.
- Вы сможет поднять сервис NTP (Network Time Protocol), который будет с заданной периодичностью занимать точное время с сервера с атомными часами. Очень рекомендую использование NTP.
Впрочем в системе по умолчанию настроена синхронизация времени с интернетом и я уже давно забыл что значит всегда перенастраивать часы, если они отстают, такая необходимость может появиться. В этой посте мы рассмотрим как выполняется установка времени Linux различными способами, через терминал, графичный интерфейс и так далее. Но сначала нам нужно понять как работает время.
Какое время бывает в Linux?
Для поддержания времени имеется в Linux есть команда date, и у неё есть множество других замечательных возможностей, о каких владельцы UNIX-систем могут и не догадываться. Серверные и системные часы должны указывать верное время. Время от времени часы на компьютере могут сбиваться по различным причинам, время сможет быть установлено изначально неправильно или неправильно выбран часовой пояс.
Немного теории. В любом компьютере есть два вида часов. Одни аппаратные (ЧРВ — часы настоящего времени или RTC — real time clock), которые работают даже при выключенном блоке кормления, на это у них есть батарейка на материнской плате. Другие программные, то есть часы (прибор для определения текущего времени суток и измерения продолжительности временных интервалов в единицах, меньших, чем одни сутки) операционной системы. Сведения этих часов могут различаться. При этом программные часы опираются на показания аппаратных при старте операторной системы. А в дальнейшем могут синхронизироваться через интернет с эталонными и корректировать ход аппаратных.
Внимание: дату и время может изменять только root-пользователь.
В большинстве ситуации если компьютер работает под управлением операционной системой Windows показания аппаратных и программных часов сходят. В linux же чаще всего аппаратные часы настраивают по гринвичу (времени нулевого экватора), а программные по необходимому смещению для часового пояса где расположен сервер. Абсолютное большинство прог (приложений и сервисов) в своей работе опираются на показания системных (программных) часов.
Узнать время на сервере в Linux Ubuntu
Знаете ли вы, что по умолчанию в Linux каждые день примерно в четыре часа ночи запускаются различные служебные задачи?! Например чистка временных каталогов, сжатие лог-файлов и т.п. А теперь представьте, что время на сервере настроено ошибочно и все эти задачи запускаются в час пик посещаемости вашего сайта. Правильно установленные дата и время нужны для корректной работы планировщика задач.
Кроме того, они пишутся во все основные целые лог-файлы и лог-файлы посещений веб-сервера. Никогда не возникало желания узнать время или дату, когда под рукой только Ubuntu, а телефон с часами где-то запропастились? Запустите команду date без характеристик для проверки времени. Как всегда в Ubuntu все элементарно, нужно только набрать команду:
Команда date — как раз для этих целей. Можно почитать ее справку — там много чего интересного.
Когда временная зона установлена неправильно, используйте «timeconfig» или «linuxconf» для корректировки. Если с преходящей зоной все в порядке, но дата или время нуждаются в обновлении, то используйте команды (Команда — группа лиц, объединённая общими мотивами, интересами) описанные ниже. Бригада во второй строке нужна что бы обновить машинный таймер.
Как узнать время через консоль Linux?
Наверное у многих были ситуации, когда под руками лишь консоль, а время узнать нужно. Для того, чтобы посмотреть текущее время чрез консоль Linux достаточно ввести следующую команду
Для этого, чтобы поменять время консоль Linux нужно ввести следующую команду:
где, MM — представляется месяцем, DD — днем, hh — часом, mm — минутой, CCYY — годом (вводим так – хххх), ss — секундами. То имеется в виде МесяцДеньЧасМинута, остальное [MMDDhhmm[[CC]YY][.ss]] по вкусу. Об это хорошо (и главное в самом верху) составлено в мануале man date, однако остальное писалось, по всей видимости, роботами для роботов. Воздействие нужно выполнять из под рута. Для того, чтобы посмотреть полный список команд, какие помогут вам изменить/настроить время через консоль Linux достаточно ввести
Как настроить время на сервере Linux чрез hwclock?
Проверим, что показывают аппаратные часы, для чего будем использовать три вида команды hwclock:
# hwclock
Sun 09 Mar 2014 08:01:03 PM MSK -0.926999 seconds
# hwclock —localtime
Sun 09 Mar 2014 04:01:16 PM MSK -0.130659 seconds
# hwclock —utc
Sun 09 Mar 2014 08:01:25 PM MSK -0.411394 seconds
Ставим время аппаратных часов равное системному:
Ставим время системных часов на основании ЧРВ:
Устанавливаем время равновеликое указанному:
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. Как видите, это очень просто, вы можете использовать различные способы, в зависимости от того, что вам будет спокойнее.
Источник
Команда 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.
Источник