Поиск по сайту:

Учебник по командам Linux time для начинающих (с примерами)


На этой странице

  1. Команда времени Linux
  2. Q1. Как использовать команду времени?
  3. Вопрос 2. Как заставить время записать свой вывод в файл?
  4. Вопрос 3. Как заставить время производить подробный вывод?
  5. Q4. Как настроить вывод команды времени?
  6. Заключение

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

К счастью, существует инструмент — дублированное время, специально созданный для этой цели. В этой статье мы обсудим основы команды времени, используя несколько простых для понимания примеров.

Но прежде чем мы это сделаем, стоит упомянуть, что все примеры в этом руководстве были протестированы на компьютере с Ubuntu 18.04 LTS.

команда времени Linux

Команда time в Linux позволяет запускать программы и подводить итоги использования ими системных ресурсов. Ниже приведен его синтаксис:

time [OPTIONS] COMMAND [ARGS]

Вот как это описывает справочная страница инструментов:

time run the program COMMAND with any given arguments ARG....  When COMMAND finishes, time displays
information about resources used by COMMAND (on the standard error output, by default). 

If COMMAND exits with non-zero status, time displays a warning message and the exit status.

time determines which information to display about the resources used by the COMMAND from the
string FORMAT. If no format is specified on the command line, but the TIME environment variable
is set, its value is used as the format. Otherwise, a default format built into time is used.

Options to time must appear on the command line before COMMAND.  Anything on the command line after
COMMAND is passed as arguments to COMMAND.

Ниже приведены несколько примеров в стиле вопросов и ответов, которые должны дать вам лучшее представление о том, как работает команда времени.

Q1. Как использовать команду времени?

Основное использование простое - просто выполните время с командой/программой, которую вы хотите запустить в качестве входных данных.

Например, я использовал команду времени следующим образом:

time ping linux-console.net

И вот вывод:

PING linux-console.net (104.24.0.68) 56(84) bytes of data.
64 bytes from 104.24.0.68 (104.24.0.68): icmp_seq=1 ttl=59 time=93.8 ms
64 bytes from 104.24.0.68 (104.24.0.68): icmp_seq=2 ttl=59 time=91.5 ms
64 bytes from 104.24.0.68 (104.24.0.68): icmp_seq=3 ttl=59 time=93.1 ms
64 bytes from 104.24.0.68 (104.24.0.68): icmp_seq=4 ttl=59 time=102 ms
^C
--- linux-console.net ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 91.510/95.249/102.490/4.267 ms

real    0m3.472s
user    0m0.000s
sys    0m0.004s

Последние три строки вывода добавляются командой time. В то время как real означает время настенных часов, которое потребовалось команде ping от выполнения до завершения, user и sys — это время, затраченное на ping пространство пользователя и пространство ядра, соответственно. Подробная информация об этих трех временах доступна здесь.

Q2. Как заставить время записать свой вывод в файл?

Если вы хотите, чтобы команда time записывала свои выходные данные в файл, а не в терминал, используйте параметр командной строки -o, который ожидает имя файла/путь в качестве входных данных.

Например:

/usr/bin/time -o /home/himanshu/time-output.txt ping linux-console.net

Эта команда отобразит вывод команды ping на стандартный вывод, а вывод команды time будет записан в текстовый файл.

ПРИМЕЧАНИЕ. Мы использовали /usr/bin/time вместо time, потому что встроенная команда time не поддерживает параметр -o.

По умолчанию каждый раз, когда вы запускаете эту команду, выходной файл перезаписывается. Однако, если вы хотите, вы можете убедиться, что новый вывод добавлен, используя параметр командной строки -a.

Q3. Как заставить время производить подробный вывод?

Это можно сделать с помощью параметра командной строки -v. Например, когда я использовал эту опцию во время работы с командой ping, в выходных данных команды time были получены следующие данные:

Command being timed: "ping linux-console.net"
    User time (seconds): 0.00
    System time (seconds): 0.00
    Percent of CPU this job got: 0%
    Elapsed (wall clock) time (h:mm:ss or m:ss): 0:11.77
    Average shared text size (kbytes): 0
    Average unshared data size (kbytes): 0
    Average stack size (kbytes): 0
    Average total size (kbytes): 0
    Maximum resident set size (kbytes): 3064
    Average resident set size (kbytes): 0
    Major (requiring I/O) page faults: 0
    Minor (reclaiming a frame) page faults: 158
    Voluntary context switches: 14
    Involuntary context switches: 0
    Swaps: 0
    File system inputs: 0
    File system outputs: 0
    Socket messages sent: 0
    Socket messages received: 0
    Signals delivered: 0
    Page size (bytes): 4096
    Exit status: 0

Таким образом, вы можете видеть, что в этом режиме команда времени выдает много других деталей.

Q4. Как настроить вывод команды времени?

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

Например, команда времени в следующем исполнении:

/usr/bin/time -f "\t%C [Command details],\t%K [Total memory usage],\t%k [Number of signals process received]" ping linux-console.net

произвел этот вывод:

ping linux-console.net [Command details],    0 [Total memory usage],    0 [Number of signals process received]

Справочная страница команды time содержит подробности, относящиеся к параметру командной строки формата.

Заключение

Команда времени в основном используется разработчиками программного обеспечения и тестировщиками. Однако нет ничего плохого в том, чтобы знать это, даже если вы не один из них, потому что вы никогда не знаете, когда вам это может понадобиться. Дополнительную информацию об этой команде можно получить на справочной странице инструментов.