TIME(1)

НАИМЕНОВАНИЕ
time - запускает программы и показывает справку по использованным системным ресурсам

СИНТАКСИС

time
    [ -apqvV ] [ -f FORMAT ] [ -o FILE ]
    [ --append ] [ --verbose ] [ --quiet ] [ --portability ]
    [ --format=FORMAT ] [ --output=FILE ] [ --version ]
    [ --help ] COMMAND [ ARGS ]

ОПИСАНИЕ
time запускает программу COMMAND с любыми заданными аргументами ARG.... Когда COMMAND завершится, time отобразит информацию о ресурсах, используемых COMMAND (по умолчанию в стандартном выводе ошибки). Если COMMAND завершает работу с ненулевым результатом, time отображает предупреждающее сообщение и код результата.

time определяет, какую информацию о ресурсах, используемых COMMAND, отображать из строки FORMAT. Если в командной строке формат не указан, но задана переменная окружения TIME, в качестве формата используется ее значение. В противном случае используется формат по умолчанию, встроенный в time.

Параметры для time должны быть в командной строке перед COMMAND. Все, что находится в командной строке после COMMAND, передается в качестве аргументов COMMAND.

ОПЦИИ

-o файл, --output=файл
    Пишет статистику использования ресурсов в файл FILE вместо стандартного потока ошибок. По умолчанию при этом файл перезаписывается, уничтожая предыдущее содержимое файла. Этот параметр полезен для сбора информации об интерактивных программах и программах, которые выдают выходные данные в стандартном потоке ошибок.

-a, --append
    Добавляет информацию об использовании ресурса в выходной файл вместо того, чтобы перезаписывать ее. Эта опция имеет смысл только с параметром `-o' или `--output'.

-f формат, --format формат
    Использует FORMAT в качестве строки описания формата вывода time. Подробности см. ниже.

--help
    Вывести справку по параметрам командной строки и завершить работу.

-p, --portability
    Для соответствия стандарту POSIX 1003.2 используйте следующую строку формата:
              real %e
              user %U
              sys %S

    (прим. пер.: real — это wall clock время, т.е. время, которое реально прошло от старта программы до окончания ее работы; user — процессорное время в пространстве пользователя, т.е. время, которое процессор фактически потратил на выполнение заданного кода в пространстве пользователя; sys — процессорное время в пространстве ядра.)

-v, --verbose
    Используется встроенный подробный формат, который отображает каждую доступную информацию об использовании ресурсов программы в отдельной строке с описанием ее значения на английском языке.

--quiet
    Не сообщайте о код результата программы, даже если он отличается от нуля.

-V, --version
    Вывести номер версии time и завершить работу.

ФОРМАТИРОВАНИЕ ВЫВОДА
Строка формата FORMAT управляет содержимым вывода time . Строка формата может быть задана с помощью параметров `-f' или `--format', либо `-v' или `--verbose', либо `-p' или `--portability'. Если они не given, but the TIME , то ее значение используется в качестве строки формата. В противном случае используется встроенный формат по умолчанию. Формат по умолчанию следующий:
  %Uuser %Ssystem %Eelapsed %PCPU (%Xtext+%Ddata %Mmax)k
  %Iinputs+%Ooutputs (%Fmajor+%Rminor)pagefaults %Wswaps (прим. пер.: авторское форматирование цинично сохранено)

Строка формата обычно состоит из "спецификаторов ресурсов" внутри обычного текста. Знак процента (`%')) в строке формата приводит к тому, что следующий символ интерпретируется как спецификатор ресурса по аналогии с символами форматирования в функции printf(3).

Обратная косая черта (`\') предваряет "экранирование обратной косой черты", которое преобразуется в один печатный символ при выводе. `\t' выводит символ табуляции, `\n' выводит новую строку, а `\\' выводит обратную косую черту. Обратная косая черта, за которой следует любой другой символ, выводит вопросительный знак (`?'), за которым следует обратная косая черта, указывающая на то, что был задан недопустимый экранирующий символ обратной косой черты.

Другой текст в строке формата копируется в вывод буквально. time всегда переходит на новую строку после печати информации об использовании ресурса, поэтому обычно форматируемые строки не заканчиваются символом новой строки (или `\n').

Существует множество спецификаций ресурсов. Не любой ресурс может быть измерен всеми версиями Unix, поэтому некоторые значения могут быть указаны как нулевые. Любой символ, следующий за знаком процента, которого нет в таблице ниже, приводит к выводу вопросительного знака (`?'), за которым следует этот символ, указывающий на то, что был задан недопустимый спецификатор ресурса.

Спецификаторами ресурсов, которые являются надмножеством тех, которые распознаются встроенной в tcsh(1) командой `time', являются:
    %   Символ `%'.
    С   Имя и аргументы командной строки запущенной команды.
    D   Средний размер неразделяемой области данных процесса в килобайтах.
    E   Фактическое затраченное время (wall clock), используемое процессом, в формате [часы:]минуты:секунды. (прим. пер.: есть два типа времени работы программы: процессорное время (время ЦП) — время, которое процессор фактически потратил на выполнение заданного кода, и wall clock время — время, которое реально прошло от старта программы до окончания ее работы. Основная разница между этими двумя измерениями заключается в том, что при измерении wall clock времени учитывается также время, которое процессор потратил на обработку других процессов. Соответственно, при разной загрузке системы, wall clock время может отличаться для одного и того же кода. Например, при записи в файл, время записи тоже будет включено в wall clock время.)
    F   Число значительных или требующих ввода-вывода отказов страниц, произошедших при работе процесса. Это ошибки, при которых страница действительно была вынесена из основной памяти.
    I   Количество чтений файловой системы процессом.
    K   Средний общий размер использованной процессом памяти (данные+стек+текст) в килобайтах.
    M   Максимальный резидентный размер процесса в течении его выполнения в килобайтах.
    O   Количество записи в файловую систему процессом.
    П   Процент загрузки процессора этим заданием. Это процессорное время в пространстве пользователя + тоже в пространстве ядра, делённое на общее время работы. Он также печатает знак процента.
    R   Число лёгких или восстановимых отказов страниц. Это страницы, которые недействительны (поэтому это отказ), но на место которых еще не претендовали другие виртуальные страницы. Таким образом, данные в странице всё ещё существуют, но требуется обновление системных таблиц.
    S   Общее количество процессорного времени, используемого системой от имени процесса (в режиме ядра), в секундах.
    U   Общее количество процессорного времени, которое процесс использовал непосредственно (в пользовательском режиме), в секундах.
    W   Количество раз, которое процесс был выгружен в область подкачки из основной памяти.
    X   Средний объем совместно используемого текста (shared text) в процессе, в килобайтах.
    З   Размер системной страницы в байтах. Это значение является постоянным, но может отличаться у разных систем.
    c   Количество раз, когда для процесса совершалось принудительное переключение контекста (потому что истёк выделенный ему отрезок времени).
    e   Фактическое затраченное время (wall clock), используемое процессом, в секундах.
    к   Количество сигналов, доставленных процессу.
    p   Средний размер неразделенного стека процесса в килобайтах.
    r   Количество сообщений, принятых процессом из сокета.
    s   Количество сообщений, посланных процессом в сокет.
    t   Средний резидентный размер процесса в килобайтах.
    w   Количество случаев добровольного переключения контекста программы, например, на время ожидания завершения операций ввода/вывода.
    x   Код результата выполненной команды.

ПРИМЕРЫ
Запустить команду `wc /etc/hosts' и отобразить информацию по умолчанию:
     time wc /etc/hosts

Запустить команду `ls -Fs' и показать только процессорное время в пространстве пользователя (user), тоже в пространстве ядра (sys) и общее время (real):
     time -f "\t%E real,\t%U user,\t%S sys" ls -Fs

Редактировать файл BORK и добавить прошедшее время и количество сигналов, выведенное `time', в файл `log', считав строку формата из переменной окружения `TIME':
     export TIME="\t%E,\t%k" # Для bash or ksh
     setenv TIME "\t%E,\t%k" # Для csh or tcsh
     time -a -o log emacs bork

Пользователям оболочки bash необходимо использовать явный путь для запуска внешней команды time , иначе запустится встроенную в оболочку команда. В системе, где time устанавливается в /usr/bin, первый пример будет таким
     /usr/bin/time wc /etc/hosts (прим. пер.: авторское форматирование цинично сохранено)

ТОЧНОСТЬ
Прошедшее время не собирается атомарно при выполнении программы. В результате, при необычных обстоятельствах (если команда time останавливается или уходит в подкачку в промежутке между моментом завершения программы, для которой выполняется синхронизация, и моментом, когда time вычисляет, сколько времени потребовалось для запуска), это время может быть намного больше, чем фактическое время выполнения.

Когда время выполнения команды очень близко к нулю, некоторые значения (например, процент использования процессора) могут отображаться либо как ноль (что неверно), либо как знак вопроса.

Большая часть информации, отображаемой time, получена из системного вызова wait3(2). Поэтому корректность чисел определяется корректностью значений, которые возвращает wait3(2). В системах, в которых нет вызова wait3(2), возвращающего информацию о состоянии, вместо него используется системный вызов times(2). Однако он предоставляет гораздо меньше информации, чем wait3(2), поэтому в этих системах time для большинства ресурсов выдаёт нули.

Предполагается, что значения `%I' и `%O' являются только "реальными" вводом и выводом и не включают поддержку кэширующих устройств. Значение "реального" ввода-вывода, о котором сообщают "%I" и "%O", может быть путанным для рабочих станций, особенно бездисковых.

ДИАГНОСТИКА
Команда time завершается, когда программа завершает работу, останавливается или прерывается по сигналу. Если программа завершилась нормально, возвращаемое значение time является возвращаемым значением программы, которую она выполнила и измерила. В противном случае возвращаемое значение равно 128 плюс номер сигнала, который вызвал остановку или прерывание работы программы.

АВТОРЫ
time была написана Дэвидом Маккензи (David MacKenzie). Эта справочная страница была добавлена Дирком Эдделбюттелем (Dirk Eddelbuettel) <edd@debian.org>, сопровождающим Debian GNU/Linux, и предназначена для использования дистрибутивом Debian GNU/Linux, но, конечно, может использоваться другими.

СМОТРИТЕ ТАКЖЕ
tcsh(1), printf(3)

ПЕРЕВОД
Русский перевод этой страницы руководства разработал(и) Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Yuri Kozlov <yuray@komyakino.ru>, Иван Павлов <pavia00@gmail.com> и Сухичев Михаил Иванович <sukhichev@yandex.ru>
Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков (debian-l10n-russian@lists.debian.org).