- Русские Блоги
- Функции времени, связанные с Linux
- Тип времени
- 1.1 time_t
- 1.2 struct tm
- 1.3 struct timeval
- 1.4 struct timespec
- 2. Преобразование типа времени
- 2.1 Время преобразования типа
- 2.2 Пример
- 3. Задержка функции и функции таймера
- 3.1 Функция сна
- 3.2 Функция задержки
- 3.3 Таймер Функция
- 3.4 Пример
- Linux date command
- Syntax
- Options
- Date format
- Examples
- Related commands
Русские Блоги
Функции времени, связанные с Linux
Эта статья предназначена для простого резюме временных функций, общих для системного программирования Linux. Давайте сначала посмотрим на несколько типов данных, а затем посмотрите, как преобразуются несколько временных форматов и суммируют соответствующие функции получения времени задержки времени и системы.
Тип времени
1.1 time_t
На самом деле, длинное целое число, представляет время UTC (0: 0AM 0:05 1 января 1970 года, время эпохи системы Linux) к текущей системе вторичной разницы во времени, обычно используется для временных функций:
Используя функцию Ctime (), мы можем преобразовать функцию времени добраться до времени и даты нашего привычного использования и вернуть его в строку.
Кроме того, если вы хотите сравнить разницу времени между двумя раз, вы можете использовать функцию Difftime ():
1.2 struct tm
Структура TM называется взорванным временем в стандарте ANSI. Из определения следующего мы также можем увидеть, что время разлагается в очень подробную область.
Функции Gmtime () и LoceTime () могут преобразовать форматы данных Time_T в форматы TM. Разница состоит в том, что результатом преобразования GMTime () — это информация, соответствующая GMT (центральному часовым поясам), и результатом преобразования локального () функции — это информация о текущем часовом поясе.
Функция функции MKTime () точно противоположная, и она преобразует структуру TM в Time_T тип времени.
Функция ASCTIME () представляет собой время и дату представления структуры TM в наше привычное использование и возвращается в строку.
1.3 struct timeval
Структура Timeval может получить время точности уровня MS, которая определяется следующим образом:
Функция, используемая структурой Timeval: GetTimeOfDay () и SettimeOfDay ():
1.4 struct timespec
Структура TimeSpec может обеспечить более высокие значения времени прецизионного времени, а уровень NS определяется следующим образом:
Соответствующая функция: clock_getime ():
Если CLK_ID используется для разработки соответствующего типа часов, могут использоваться разные типы для получения различных значений времени, с четырьмя видами:
- CLOCK_REALTIME: Система — это в режиме реального времени, начиная с UTC, если время изменяется соответственно пользовательскими изменениями;
- CLOCK_MONOTONIC:Когда система запускает запуск, даже если пользователь меняет время;
- CLOCK_PROCESS_CPUTIME_ID:Этот процесс начинает выполнять время в текущую программу систем процессора;
- CLOCK_THREAD_CPUTIME_ID:Этот рычаг начинается со временем выполнения в текущей программной системе CPU.
2. Преобразование типа времени
2.1 Время преобразования типа
Введенные соответствующие функции времени и соответствующие функции обработки, давайте сделаем простой сводку различных типов времени, как показано ниже:
Большинство функций на рисунке были описаны в разделе 1, где две функции используются в структурных типах TM и пользователь, определенные в типе структуры TM и определенным пользователем. Convert между форматом отображения.
Функция STRFTIME () преобразует формат TM в формат формата и поместите его в главный адрес, а формат общего формата:
- Микро-неделя
- % Полное имя
- Микрофин
- % B полное имя
- Строка времени даты% C Standard
- Опубликовать два числа в% c
- Первый день ежемесячного указа
- % D месяц / день / год
- % e в двух символьном домене, первый день ежемесячного представления
- % F лет — месяц — день
- Следующие два числа% г старых, используйте недельный год
- % G старше, используйте недельный год
- % h Короткопичное имя месяца
- % H 24 часа часа
- % I 12 часов часов
- % J разумно выразил первые несколько дней
- Месяц, указанный% m dec
- Минимальное количество минут, обозначенных% м
- % N новый символ линии
- % P Местный AM или PM эквивалентно отобразить
- % R 12 часов времени
- % R показывает часы и минуты: HH: мм
- % S Десятичное количество секунд
- % T горизонтальная вкладка
- % T отображение времени STATH: HH: MM: SS
- % U Еженедельный день, в понедельник первый день (стоимость от 0 до 6, понедельник 0)
- % U, Годилой неделя, поставить воскресенье в качестве первого дня (стоимость от 0 до 53)
- Процент недели, используя ежедневный год
- Выполнение% WECIMAL (значение от 0 до 6, воскресенье 0)
- Неделя% W, в понедельник в качестве первого дня (стоимость от 0 до 53)
- % X Стандартная строка даты
- % X Стандартная строка времени
- % Y не займет десять лет (стоимость от 0 до 99)
- % Y принимает десятичный год века
- % Z,% Z Название часового пояса, если имя часового пояса не может быть получено, верните пустые символы.
- %% процентов знака
Функция STRPTIME () выполняет противоположную работу, преобразуйте функцию Rentime () обратно в формат структуры TM. Это определяется следующим образом:
2.2 Пример
После того, как рассказываю это, давайте пройдем простой пример:
3. Задержка функции и функции таймера
3.1 Функция сна
В пространстве пользователя Linux мы можем использовать семейство функции Sleep, чтобы добиться отложенных функций, следующие три функции сна обеспечивают три прецизионные задержки:
3.2 Функция задержки
В слое ядра Linux мы можем использовать семейство функции задержки для достижения различных функций времени точности:
3.3 Таймер Функция
Функции таймера, доступные в системе Linux, имеют много, такие как тревоги, выберите и многое другое. Этот раздел введет высокоточный таймер, который поставляется из стандарта POSIX. Так же, как нить, описанная выше, различные механизмы синхронизации, которые также имеют набор таких функций, как создание, удаление, съемку, настройка, все из которых включены в файл Time.h.
Создать таймер
Успешно создаваемые возвраты 0 не удалось вернуть -1 и обновить код ошибки. TimerId — это идентификатор таймера, который создает успех, а два других параметра являются относительно сложными:
(1). clockid_t: Используемые типы таймеров, в основном включают в себя:
- CLOCK_REALTIME: Время спасено, например, 10 точка 10 Отдел, мы встали 10min Таймер, 5min После этого мы изменим системное время в 10 точка 10 Дивизион, таймер также пройдет 10min Когда. (Предположим, мы меняем время в это время 10 точка 25 Какое поведение ветвь? Несомненно
- CLOCK_MONOTONIC: Таймер строго основан на установленном времени, не может быть изменен, изменяя время;
- CLOCK_PROCESS_CPUTIME_ID: Таймер записывает только фактические затраты на фактические затраты; например, можно получить только 50% времени процессора, чтобы сделать процесс по-настоящему пройти через 10 минут, до 10:30 таймера истекает.
- CLOCK_THREAD_CPUTIME_ID: С потоками для синхронизанных объектов нить в текущем процессе действительно проходит в течение определенного периода времени. Timer 。
(2). Sigevent : Если параметр EVP NULL, таймер истекает, генерирует сигнал по умолчанию, такой как Clock_realTimer, сигнал по умолчанию — SigalRM, а значение выглядит следующим образом:
среди них sigev_notify Говорят, что есть несколько способов:
- SIGEV_NONE: Не производить уведомление, когда истек;
- Sigev_signal: процесс будет доставлен в процесс для сигнала sigev_signo, чтобы указать, какой сигнал используется;
- SIGEV_THREAD:Новая тема будет инициирована, когда истекает таймер; в этом случае требуется sigev_notify_function. Когда истекает таймер, нить будет запущена с использованием этой функции в качестве впуска для обработки сигнала; SIGEV_VALUE сохраняет параметры входящего SIGEV_NOTIFY_FUCT. Sigev_notify_attributes Если это не пусто, это должно быть указателем на pthread_attr_t для установки свойств потока (например, размер стека, отсоединение статуса и т. Д.);
- SIGEV_THREAD_ID:Сигнал отправляется на указанную нить, обычно в сочетании с SIGEV_Signal, поэтому, когда истекает таймер, система отправляет сигнал на поток, указанную в SIGEV_NOTIFY_THREAD_ID, в противном случае любой поток в процессе может получить сигнал.
2. Начать таймер
Для new_value it_value используется для указания времени истечения срока действия текущего таймера. Когда таймер истекает, значение iT_Value будет обновляться в значение iT_Interval. Если значение iT_Interval равно 0, таймер не является планировщиком пространства временного пространства, и после истечения истечения IT_Value, он вернется к состоянию SCASTAPT.
Иногда приложение запускает таймер с интервалом времени, затем измените интервал времени таймера, который может быть реализован путем изменения new_value; если приложение хочет понять интервал времени перед изменением набора временных интервалов, его передается NONULL OLL_VALUE POINTER, поэтому, когда return returs time_settime () red_value сохраняет последнюю настройку интервала времени таймера. В большинстве случаев нам это не нужно, вы можете просто установить Old_Value на NULL, игнорируйте его.
Флаги только 2: 0 и Timer_abStime. Когда флаги 0, new_value-> it_value означает, что время времени, когда таймер сначала истек (например, я надеюсь, что время 2 секунды через 2 секунды); когда флаги Timer_abStime, new_value-> it_value означает первое завершение абсолютного времени ( Например, когда таймер истекает в 01:23:45); если new_value-> it_value установите абсолютное время, чем текущее абсолютное время, то таймер истекает немедленно; если часы clock_realtime отрегулируются, первое время таймера скорректирован соответствующим образом.
3. Получите оставшееся время таймера
4. Количество превышающих ограничений для получения таймеров
Возможно, что таймер истекает, и сигнал, генерируемый в последнее время таймера, все еще находится в приостановленном состоянии. В этом случае один из сигналов может быть потерян. Это ограниченный по времени таймера. Программа может определить это переполнение количества исключений, вызывая Timer_GetoverRun. Оверксирующий таймер может происходить только на сигнале, генерируемом тем же таймером. Несколькими таймерами, даже те таймеры, которые используют те же часы и сигналы, сгенерированные сигналы будут очереде, не потерявшись.
6. Удалить таймер
3.4 Пример
Давайте посмотрим на примере использования таймера:
Как видно из прогона, начальный таймер — 4S истечение срока действия, а последнее срок действия 3S:
Примечание:
- Чтобы использовать таймер POSIX, вы хотите динамически ссылку Librit (Live Dynamic Library Glibc) при компиляции добавьте опцию -lrt.
- ASCTIME (), строка, возвращаемая функцией Ctime (), заканчивается «\ n».
Написано в WEN: эта статья является основной запиской, договоренностью главы и содержание AUPUE. Есть упущения или неправильные места в тексте, пожалуйста, также просветите меня.
Источник
Linux date command
On Unix-like operating systems, the date command is used to print out, or change the value of, the system’s time and date information.
This page covers the GNU/Linux version of date.
Syntax
Options
-d, —date=STRING | Display time described by string STRING, instead of the default, which is ‘now‘. |
-f, —file=DATEFILE | Like —date, but processed once for each line of file DATEFILE. |
-I[TIMESPEC], —iso-8601[=TIMESPEC] | Output date/time in ISO 8601 format. For values of TIMESPEC, use ‘date‘ for date only (the default), ‘hours‘, ‘minutes‘, ‘seconds‘, or ‘ns‘ for date and time to the indicated precision. |
-r, —reference=FILE | Display the last modification time of file FILE. |
-R, —rfc-2822 | Output date and time in RFC 2822 format. Example: Mon, 07 Aug 2006 12:34:56 -0600 |
—rfc-3339=TIMESPEC | Output date and time in RFC 3339 format. TIMESPEC can be set to ‘date‘, ‘seconds‘, or ‘ns‘ for date and time to the indicated precision. Date and time components are separated by a single space, for example: 2006-08-07 12:34:56-06:00 |
-s, —set=STRING | Set time described by string STRING. |
-u, —utc, —universal | Print or set Coordinated Universal Time. |
—help | Display a help message and exit. |
—version | Display version information and exit. |
Date format
FORMAT is a sequence of characters which specifies how output appears. It comprises some combination of the following sequences:
%% | A literal percent sign («%«). |
%a | The abbreviated weekday name (e.g., Sun). |
%A | The full weekday name (e.g., Sunday). |
%b | The abbreviated month name (e.g., Jan). |
%B | Locale’s full month name (e.g., January). |
%c | The date and time (e.g., Thu Mar 3 23:05:25 2005). |
%C | The current century; like %Y, except omit last two digits (e.g., 20). |
%d | Day of month (e.g., 01). |
%D | Date; same as %m/%d/%y. |
%e | Day of month, space padded; same as %_d. |
%F | Full date; same as %Y-%m-%d. |
%g | Last two digits of year of ISO week number (see %G). |
%G | Year of ISO week number (see %V); normally useful only with %V. |
%h | Same as %b. |
%H | Hour (00..23). |
%I | Hour (01..12). |
%j | Day of year (001..366). |
%k | Hour, space padded ( 0..23); same as %_H. |
%l | Hour, space padded ( 1..12); same as %_I. |
%m | Month (01..12). |
%M | Minute (00..59). |
%n | A newline. |
%N | Nanoseconds (000000000..999999999). |
%p | Locale’s equivalent of either AM or PM; blank if not known. |
%P | Like %p, but lowercase. |
%r | Locale’s 12-hour clock time (e.g., 11:11:04 PM). |
%R | 24-hour hour and minute; same as %H:%M. |
%s | Seconds since 1970-01-01 00:00:00 UTC. |
%S | Second (00..60). |
%t | A tab. |
%T | Time; same as %H:%M:%S. |
%u | Day of week (1..7); 1 is Monday. |
%U | Week number of year, with Sunday as first day of week (00..53). |
%V | ISO week number, with Monday as first day of week (01..53). |
%w | Day of week (0..6); 0 is Sunday. |
%W | Week number of year, with Monday as first day of week (00..53). |
%x | Locale’s date representation (e.g., 12/31/99). |
%X | Locale’s time representation (e.g., 23:13:48). |
%y | Last two digits of year (00..99). |
%Y | Year. |
%z | +hhmm numeric time zone (e.g., -0400). |
%:z | +hh:mm numeric time zone (e.g., -04:00). |
%::z | +hh:mm:ss numeric time zone (e.g., -04:00:00). |
%. z | Numeric time zone with «:» to necessary precision (e.g., -04, +05:30). |
%Z | Alphabetic time zone abbreviation (e.g., EDT). |
By default, date pads numeric fields with zeroes. The following optional flags may follow ‘%‘:
— | (Hyphen) do not pad the field. |
_ | Pad with spaces. |
0 | Pad with zeros. |
^ | Use uppercase if possible. |
# | Use opposite case if possible. |
After any flags comes an optional field width, as a decimal number; then an optional modifier, which is either E to use the locale’s alternate representations if available, or O to use the locale’s alternate numeric symbols if available.
Examples
Running date with no options outputs the system date and time, as in the following output:
Set the system date and time to November 20, 2003, 12:48 PM.
Outputs the date and time in the following format:
In bash, this command generates a directory listing with ls, and redirect the output to a file which includes the current day, month, and year in the file name. It does this using bash command substitution, running the date command in a subshell and inserting that output into the original command.
Related commands
time — Report how long it takes for a command to execute.
Источник