Как рассчитать команду в Linux

by itisgood

Если вы хотите быть хорошим администратором Linux, вы должны знать команду time.

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

Это полезно для тестирования производительности ваших скриптов и команд (т. е. Помогает найти время выполнения скриптов оболочки или время, необходимое для завершения команды).

Как использовать команду time в Linux

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

Пожалуйста, проверьте ниже пример:

$ time ping itsecforu.ru
output
PING linoxide.com (104.27.115.15) 56(84) bytes of data.
64 bytes from 104.27.115.15 (104.27.115.15): icmp_seq=1 ttl=58 time=1.77 ms
64 bytes from 104.27.115.15 (104.27.115.15): icmp_seq=2 ttl=58 time=2.12 ms
64 bytes from 104.27.115.15 (104.27.115.15): icmp_seq=3 ttl=58 time=1.65 ms

--- linoxide.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 10016ms
rtt min/avg/max/mdev = 1.118/1.476/2.124/0.362 ms

real    0m10.536s
user    0m0.002s
sys     0m0.007s

значение real обозначает время, которое команда ‘ping’ занимала от выполнения до завершения, user и sys – это время, необходимое для проверки связи с пользовательским пространством и пространством ядра.

Как сделать так, чтобы команда time записывала свой вывод в файл

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

$ /usr/bin/time -o /home/smart/time-output.txt ping itisgood.ru

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

Примечание: мы использовали /usr/bin/time вместо time, потому что встроенная в оболочку команда time не предлагает опцию -o.

Как добавить вывод в существующий файл

Чтобы добавить вывод команды time в существующий файл, а не перезаписать его, используйте параметр командной строки -a.

$ /usr/bin/time -a /home/smart/time-output.txt ping linoxide.com

Как получить подробный вывод команды linux time

Мы можем использовать параметр командной строки -v для получения подробного вывода.

$ time -v ping itisgood.ru
    output
    Command being timed: "ping linoxide.com"
    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

Как настроить вывод команды time

Существует большое количество параметров форматирования, как показано в следующем списке:

  • C – Имя и аргументы командной строки, используемые в команде
  • D – средний размер неразделенной области данных процесса в килобайтах
  • E – истекшее время в формате часов
  • F – Количество ошибок страницы
  • I – Количество входов файловой системы процессом
  • K – среднее суммарное использование памяти процессом в килобайтах
  • М – Максимальная резидентная установка размера процесса в течение жизни в килобайтах
  • O – Количество выходов файловой системы процессом
  • P – процент CPU, полученный заданием
  • R – количество мелких или восстанавливаемых ошибок страницы
  • S – общее количество секунд процессора, используемых системой в режиме ядра
  • U – общее количество секунд процессора, используемых в пользовательском режиме
  • W – количество раз, когда процесс был выгружен из основной памяти
  • X – среднее количество общего текста в процессе
  • Z – размер страницы системы в килобайтах
  • c – Количество раз, когда процесс был переключен контекст
  • e – истекшее реальное время, использованное процессом в секундах
  • k – количество сигналов, доставленных в процесс
  • p – средний размер неразделенного стека процесса в килобайтах
  • r – количество сообщений сокета, полученных процессом
  • s – количество сообщений сокета, отправленных процессом
  • t – средний размер резидентного набора процесса в килобайтах
  • w – количество времени, когда процесс добровольно переключался
  • x – выход из команды

Мы можем использовать переключатели форматирования следующим образом:

$ time -f "Elapsed Time = %E, Inputs %I, Outputs %O"

Вывод для приведенной выше команды будет выглядеть примерно так:

Elapsed Time = 0:01:00, Inputs 2, Outputs 1

Если мы хотим добавить новую строку как часть строки формата, используйте символ новой строки следующим образом:

$ time -f "Elapsed Time = %E \n Inputs %I \n Outputs %O"

Версии команд time в Linux

Существует три варианта команды: Bash, Zsh и Gnu time.

Мы можем использовать команду type, чтобы определить, является ли time двоичным или встроенным ключевым словом.

$ type time
  output
  # Bash
  time is a shell keyword

  # Zsh
  time is a reserved word

  # GNU time (sh)
  time is /usr/bin/time

На примере Ubuntu 16.04:

type time
time является ключевым словом оболочки

 

 

You may also like

Leave a Comment