В вычислительной технике — time
команда в Unix и Unix-подобных операционных системах. Используется для определения продолжительности выполнения конкретной команды .
time(1)
может существовать как отдельная программа (например, GNU time) или как встроенная в оболочку программа в большинстве случаев (например, в sh , bash , tcsh или zsh ).
Общее время ЦП — это комбинация времени, потраченного ЦП или ЦП на выполнение некоторых действий для программы, и времени, потраченного на выполнение системных вызовов ядра от имени программы. Когда программа проходит по массиву, она накапливает пользовательское время ЦП. И наоборот, когда программа выполняет системный вызов, такой как или , она накапливает системное время ЦП.exec
fork
Термин «реальное время» в этом контексте относится к прошедшему времени настенных часов , как при использовании секундомера. Общее время ЦП (пользовательское время + системное время) может быть больше или меньше этого значения. Поскольку программа может некоторое время ждать и не выполняться вообще (будь то в пользовательском или системном режиме), реальное время может быть больше общего времени ЦП. Поскольку программа может разветвлять дочерние процессы, время ЦП которых (как пользовательское, так и системное) добавляется к значениям, сообщаемым командой time
, но в многоядерной системе эти задачи выполняются параллельно, общее время ЦП может быть больше реального времени.
Чтобы использовать команду, просто поставьте перед ней слово time
, например:
$ время ls
После завершения команды time
будет сообщено, сколько времени потребовалось для выполнения ls
команды в терминах пользовательского времени ЦП , системного времени ЦП и реального времени. Формат вывода различается в зависимости от версии команды, и некоторые из них дают дополнительную статистику, как в этом примере:
$ время хост wikipedia.org wikipedia.org имеет адрес 103.102.166.224 почта wikipedia.org обрабатывается 50 mx2001.wikimedia.org. почта wikipedia.org обрабатывается 10 mx1001.wikimedia.org. хост wikipedia.org 0.04с пользователь 0.02с система 7% процессор 0.780 всего $
time (либо как отдельная программа, либо когда оболочка Bash работает в режиме POSIX И time вызывается как ) выводит данные в стандартный вывод ошибок.time -p
Переносимые скрипты должны использовать time -p
режим, который использует другой формат вывода, но который согласуется с различными реализациями:
$ время -p sha256sum /bin/ls 12477deb0e25209768cbd79328f943a7ea8533ece70256cdea96fae0ae34d1cc /bin/ls реальное 0.00 пользователь 0.00 система 0.00 $
Текущие версии GNU time по умолчанию сообщают больше, чем просто время:
$ /usr/bin/time sha256sum /bin/ls 12477deb0e25209768cbd79328f943a7ea8533ece70256cdea96fae0ae34d1cc /bin/ls 0.00user 0.00system 0:00.00прошло 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
вместо него используется системный вызов.
В популярной оболочке Unix Bash — time
это специальное ключевое слово, которое можно поместить перед конвейером (или отдельной командой), которое измеряет время всего конвейера, а не только отдельной (первой) команды, и использует другой формат по умолчанию, а также помещает пустую строку перед отчетным временем:
$ время seq 10000000 | wc -l 10000000 реальный 0m0.078s пользователь 0m0.116s система 0m0.029s $
Сообщаемое время — это время, использованное обоими seq
и wc -l
сложенное. Формат вывода можно настроить с помощью TIMEFORMAT
переменной.
Время не является встроенным, а является специальным ключевым словом, и не может рассматриваться как функция или команда. Оно также игнорирует перенаправления конвейера (даже при выполнении как , если только весь Bash не запущен в "режиме POSIX").time -p
Доступ к документации того времени можно получить с помощью , или в самом bash с помощью .man 1 bash
help time