время (Unix)
Разработчик(и) | Различные с открытым исходным кодом и коммерческие разработчики разработчики |
---|---|
Операционная система | Unix , Unix-подобные , Inferno |
Платформа | Кросс-платформенный |
Тип | Команда |
В вычислениях , time
— это команда в Unix и Unix-подобных операционных системах. Он используется для определения продолжительности выполнения той или иной команды .
Обзор
[ редактировать ]time(1)
может существовать как отдельная программа (например, GNU time) или как встроенная оболочка в большинстве случаев (например, в sh , bash , tcsh или zsh ).
Время пользователя и системное время
[ редактировать ]Общее время ЦП представляет собой комбинацию времени, которое ЦП или ЦП потратили на выполнение какого-либо действия для программы, и количества времени, которое они потратили на выполнение вызовов ядра системных от имени программы. Когда программа проходит через массив, она накапливает время процессора пользователя. И наоборот, когда программа выполняет системный вызов, например exec
или fork
, он накапливает системное время процессора.
Реальное время и время процессора
[ редактировать ]Термин «реальное время» в этом контексте относится к истекшему времени настенных часов , например, при использовании секундомера. Общее время ЦП (время пользователя + системное время) может быть больше или меньше этого значения. Поскольку программа может некоторое время ждать и вообще не выполняться (как в пользовательском, так и в системном режиме), реальное время может превышать общее время процессора. Поскольку программа может создавать дочерние элементы, время процессора которых (как пользовательское, так и системное) добавляется к значениям, сообщаемым time
команды, но в многоядерной системе эти задачи выполняются параллельно, общее время процессора может быть больше реального времени.
Использование
[ редактировать ]Чтобы использовать команду, просто предваряйте любую команду словом time
, такой как:
$ time ls
Когда команда завершится, time
сообщит, сколько времени потребовалось для выполнения ls
команда с точки зрения времени процессора пользователя , времени процессора системы и реального времени. Формат вывода варьируется в зависимости от версии команды, а некоторые предоставляют дополнительную статистику, как в этом примере:
$ time host wikipedia.org
wikipedia.org has address 103.102.166.224
wikipedia.org mail is handled by 50 mx2001.wikimedia.org.
wikipedia.org mail is handled by 10 mx1001.wikimedia.org.
host wikipedia.org 0.04s user 0.02s system 7% cpu 0.780 total
$
время (либо отдельная программа, либо когда оболочка Bash работает в режиме POSIX И время вызывается как time -p
) сообщает стандартный вывод ошибок.
время -п
[ редактировать ]Портативные сценарии должны использовать time -p
режим, который использует другой формат вывода, но совместим с различными реализациями:
$ time -p sha256sum /bin/ls
12477deb0e25209768cbd79328f943a7ea8533ece70256cdea96fae0ae34d1cc /bin/ls
real 0.00
user 0.00
sys 0.00
$
Реализации
[ редактировать ]время GNU
[ редактировать ]Текущие версии времени GNU по умолчанию сообщают больше, чем просто время:
$ /usr/bin/time sha256sum /bin/ls
12477deb0e25209768cbd79328f943a7ea8533ece70256cdea96fae0ae34d1cc /bin/ls
0.00user 0.00system 0:00.00elapsed 100%CPU (0avgtext+0avgdata 2156maxresident)k
0inputs+0outputs (0major+96minor)pagefaults 0swaps
$
Формат вывода времени GNU можно настроить с помощью TIME
переменная среды и может включать в себя информацию, отличную от времени выполнения (т. е. использования памяти). Это поведение недоступно в обычное POSIX -совместимое время или при выполнении как time -p
.
Документация об этом время обычно можно получить с помощью man 1 time
.
Метод работы
[ редактировать ]Согласно исходному коду реализации GNU time
, большая часть информации показана time
происходит от wait3
системный вызов. В системах, не имеющих wait3
вызов, который возвращает информацию о состоянии, times
вместо этого используется системный вызов.
Баш
[ редактировать ]В популярной оболочке Bash Unix time
— это специальное ключевое слово, которое можно поставить перед конвейером (или одной командой), которое измеряет время всего конвейера, а не только единственной (первой) команды, использует другой формат по умолчанию и помещает пустую строку перед временем отчета:
$ time seq 10000000 | wc -l
10000000
real 0m0.078s
user 0m0.116s
sys 0m0.029s
$
Сообщаемое время — это время, используемое обоими seq
и wc -l
добавил. Формат вывода можно настроить с помощью TIMEFORMAT
переменная.
The time — это не встроенное, а специальное ключевое слово, и его нельзя рассматривать как функцию или команду. Он также игнорирует перенаправления конвейера (даже если выполняется как time -p
, если только Bash не запущен в «режиме POSIX»).
Документация об этом время можно получить с помощью man 1 bash
или внутри самого bash, используя help time
.
См. также
[ редактировать ]- Системное время
- Процесс Cron для планирования выполнения заданий в определенное время
- ВРЕМЯ (команда)
Ссылки
[ редактировать ]- Единая спецификация UNIX , версия 4 от The Open Group : время простой команды — Справочник по командной строке и утилитам,
- Inferno по общим командам Руководство –
- Linux пользователя Руководство – Пользовательские команды : время выполнения простой команды или использование ресурсов –